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.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;
}
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;
}
}