Skip to content
This repository was archived by the owner on Aug 18, 2020. It is now read-only.

Commit 9c2cf49

Browse files
committed
Log parsing failures of StreamElements connector
1 parent 53d90a6 commit 9c2cf49

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

src/main/scala/org/codeoverflow/chatoverflow/requirement/service/streamelements/impl/StreamElementsEventInputImpl.scala

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,31 @@ import org.codeoverflow.chatoverflow.registry.Impl
1212
import org.codeoverflow.chatoverflow.requirement.impl.EventInputImpl
1313
import org.codeoverflow.chatoverflow.requirement.service.streamelements.StreamElementsConnector
1414
import org.codeoverflow.chatoverflow.requirement.service.streamelements.StreamElementsConnector._
15-
import org.json.JSONObject
15+
import org.json.{JSONException, JSONObject}
16+
17+
import scala.reflect.ClassTag
1618

1719
@Impl(impl = classOf[StreamElementsEventInput], connector = classOf[StreamElementsConnector])
1820
class StreamElementsEventInputImpl extends EventInputImpl[StreamElementsEvent, StreamElementsConnector] with StreamElementsEventInput {
1921

2022
override def start(): Boolean = {
21-
sourceConnector.get.registerEventHandler(onFollow _)
22-
sourceConnector.get.registerEventHandler(onSubscription _)
23-
sourceConnector.get.registerEventHandler(onDonation _)
23+
sourceConnector.get.registerEventHandler(handleExceptions(onFollow))
24+
sourceConnector.get.registerEventHandler(handleExceptions(onSubscription))
25+
sourceConnector.get.registerEventHandler(handleExceptions(onDonation))
2426
true
2527
}
2628

29+
private def handleExceptions[T: ClassTag](handler: T => Unit): T => Unit = event => {
30+
try {
31+
handler(event)
32+
} catch {
33+
case e@(_: JSONException | _: IllegalArgumentException) =>
34+
val jsonClass = implicitly[ClassTag[T]].runtimeClass
35+
logger warn s"Error while parsing follow json of type ${jsonClass.getSimpleName}:"
36+
logger warn s"${e.getClass.getName} - ${e.getMessage}"
37+
}
38+
}
39+
2740
private def onFollow(event: FollowEventJSON): Unit = {
2841
val json = event.json
2942
val data = json.getJSONObject("data")

0 commit comments

Comments
 (0)