diff --git a/extension-collector/src/main/java/io/github/jwdeveloper/tiktok/extension/collector/impl/DataCollectorListener.java b/extension-collector/src/main/java/io/github/jwdeveloper/tiktok/extension/collector/impl/DataCollectorListener.java index 950971f..900edcf 100644 --- a/extension-collector/src/main/java/io/github/jwdeveloper/tiktok/extension/collector/impl/DataCollectorListener.java +++ b/extension-collector/src/main/java/io/github/jwdeveloper/tiktok/extension/collector/impl/DataCollectorListener.java @@ -4,6 +4,7 @@ import io.github.jwdeveloper.tiktok.annotations.TikTokEventObserver; import io.github.jwdeveloper.tiktok.data.events.TikTokErrorEvent; import io.github.jwdeveloper.tiktok.data.events.common.TikTokEvent; import io.github.jwdeveloper.tiktok.data.events.control.TikTokConnectingEvent; +import io.github.jwdeveloper.tiktok.data.events.room.TikTokRoomInfoEvent; import io.github.jwdeveloper.tiktok.data.events.websocket.TikTokWebsocketResponseEvent; import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveMessageException; import io.github.jwdeveloper.tiktok.extension.collector.api.LiveDataCollector; @@ -16,22 +17,20 @@ import org.bson.Document; import java.io.PrintWriter; import java.io.StringWriter; +import java.time.LocalDateTime; import java.util.Base64; -import java.util.Date; public class DataCollectorListener implements LiveDataCollector { private final Storage storage; private final CollectorListenerSettings settings; - private String roomId; - private String userName; + private String roomId, userName; public DataCollectorListener(Storage collection, CollectorListenerSettings settings) { this.storage = collection; this.settings = settings; } - @TikTokEventObserver private void onResponse(LiveClient liveClient, TikTokWebsocketResponseEvent event) { includeResponse(liveClient, event.getResponse()); @@ -40,13 +39,12 @@ public class DataCollectorListener implements LiveDataCollector { @TikTokEventObserver private void onEvent(LiveClient liveClient, TikTokEvent event) { - if (event instanceof TikTokConnectingEvent) { + if (event instanceof TikTokConnectingEvent) userName = liveClient.getRoomInfo().getHostName(); + else if (event instanceof TikTokRoomInfoEvent && roomId == null) roomId = liveClient.getRoomInfo().getRoomId(); - } - if (event instanceof TikTokErrorEvent) { + else if (event instanceof TikTokErrorEvent) return; - } includeEvent(liveClient, event); } @@ -57,7 +55,6 @@ public class DataCollectorListener implements LiveDataCollector { includeError(liveClient, event); } - private void includeResponse(LiveClient liveClient, WebcastResponse message) { var messageContent = Base64.getEncoder().encodeToString(message.toByteArray()); insertDocument(liveClient, createDocument("response", "webcast", messageContent)); @@ -86,33 +83,26 @@ public class DataCollectorListener implements LiveDataCollector { var content = sw.toString(); var contentBase64 = Base64.getEncoder().encodeToString(content.getBytes()); var doc = createDocument("error", exceptionName, contentBase64); - if (exception instanceof TikTokLiveMessageException ex) { - doc.append("message", ex.messageToBase64()) - .append("response", ex.webcastResponseToBase64()); - } + if (exception instanceof TikTokLiveMessageException ex) + doc.append("message", ex.messageToBase64()).append("response", ex.webcastResponseToBase64()); insertDocument(client, doc); } - private void insertDocument(LiveClient client, Document document) { - if (!settings.getFilter().execute(client, document)) { - return; - } - storage.insert(document); - } - + if (settings.getFilter().execute(client, document)) + storage.insert(document); + } private Document createDocument(String dataType, String dataTypeName, String content) { var doc = new Document(); doc.append("roomId", roomId); - for (var entry : settings.getExtraFields().entrySet()) { + for (var entry : settings.getExtraFields().entrySet()) doc.append(entry.getKey(), entry.getValue()); - } doc.append("tiktokUser", userName); doc.append("dataType", dataType); doc.append("dataTypeName", dataTypeName); doc.append("content", content); - doc.append("createdAt", new Date()); + doc.append("createdAt", LocalDateTime.now().toString()); return doc; } } \ No newline at end of file