mirror of
https://github.com/jwdeveloper/TikTokLiveJava.git
synced 2026-02-27 08:49:40 -05:00
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:
@@ -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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user