Moved roomId declaration to RoomInfoEvent as it is always null during onConnecting event!

Made other improvements for readability and altered createdAt field.
This commit is contained in:
kohlerpop1
2024-06-01 22:36:43 -04:00
parent 69f1d5b5c2
commit 8685d96ccf

View File

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