Skip to content

Commit 92fde03

Browse files
committed
- improve collector
1 parent e058290 commit 92fde03

File tree

4 files changed

+31
-21
lines changed

4 files changed

+31
-21
lines changed
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package io.github.jwdeveloper.tiktok.extension.collector.api;
2+
3+
import io.github.jwdeveloper.tiktok.live.LiveClient;
4+
import org.bson.Document;
5+
6+
public interface CollectorEvent {
7+
boolean execute(LiveClient client, Document document);
8+
}

extension-collector/src/main/java/io/github/jwdeveloper/tiktok/extension/collector/api/settings/CollectorListenerSettings.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.github.jwdeveloper.tiktok.extension.collector.api.settings;
22

3+
import io.github.jwdeveloper.tiktok.extension.collector.api.CollectorEvent;
34
import lombok.Data;
45
import org.bson.Document;
56

@@ -9,5 +10,5 @@
910
@Data
1011
public class CollectorListenerSettings {
1112
private Map<String, Object> extraFields;
12-
private Function<Document, Boolean> filter;
13+
private CollectorEvent filter;
1314
}

extension-collector/src/main/java/io/github/jwdeveloper/tiktok/extension/collector/impl/DataCollector.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
*/
2323
package io.github.jwdeveloper.tiktok.extension.collector.impl;
2424

25+
import io.github.jwdeveloper.tiktok.extension.collector.api.CollectorEvent;
2526
import io.github.jwdeveloper.tiktok.extension.collector.api.Storage;
2627
import io.github.jwdeveloper.tiktok.extension.collector.api.settings.CollectorListenerSettings;
2728
import org.bson.Document;
@@ -40,6 +41,7 @@ public DataCollector(Storage storage) {
4041
public void connect() {
4142
storage.connect();
4243
}
44+
4345
public void disconnect() {
4446
storage.disconnect();
4547
}
@@ -49,11 +51,11 @@ public DataCollectorListener newListener() {
4951
}
5052

5153
public DataCollectorListener newListener(Map<String, Object> additionalFields) {
52-
return newListener(additionalFields, (e) -> true);
54+
return newListener(additionalFields, (live, document) -> true);
5355
}
5456

5557
public DataCollectorListener newListener(Map<String, Object> additionalFields,
56-
Function<Document, Boolean> filter) {
58+
CollectorEvent filter) {
5759
var settings = new CollectorListenerSettings();
5860
settings.setExtraFields(additionalFields);
5961
settings.setFilter(filter);

extension-collector/src/main/java/io/github/jwdeveloper/tiktok/extension/collector/impl/DataCollectorListener.java

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,13 @@
1717
import java.io.PrintWriter;
1818
import java.io.StringWriter;
1919
import java.util.Base64;
20-
import java.util.UUID;
20+
import java.util.Date;
2121

2222
public class DataCollectorListener implements LiveDataCollector {
2323

2424
private final Storage storage;
2525
private final CollectorListenerSettings settings;
26-
private String sessionId;
26+
private String roomId;
2727
private String userName;
2828

2929
public DataCollectorListener(Storage collection, CollectorListenerSettings settings) {
@@ -41,63 +41,61 @@ private void onResponse(LiveClient liveClient, TikTokWebsocketResponseEvent even
4141
@TikTokEventObserver
4242
private void onEvent(LiveClient liveClient, TikTokEvent event) {
4343
if (event instanceof TikTokConnectingEvent) {
44-
sessionId = UUID.randomUUID().toString();
4544
userName = liveClient.getRoomInfo().getHostName();
45+
roomId = liveClient.getRoomInfo().getRoomId();
4646
}
47-
4847
if (event instanceof TikTokErrorEvent) {
4948
return;
5049
}
5150

52-
includeEvent(event);
51+
includeEvent(liveClient, event);
5352
}
5453

5554
@TikTokEventObserver
5655
private void onError(LiveClient liveClient, TikTokErrorEvent event) {
5756
event.getException().printStackTrace();
58-
includeError(event);
57+
includeError(liveClient, event);
5958
}
6059

6160

6261
private void includeResponse(LiveClient liveClient, WebcastResponse message) {
6362
var messageContent = Base64.getEncoder().encodeToString(message.toByteArray());
64-
insertDocument(createDocument("response", "webcast", messageContent));
63+
insertDocument(liveClient, createDocument("response", "webcast", messageContent));
6564
}
6665

6766
private void includeMessage(LiveClient liveClient, WebcastResponse.Message message) {
6867
var method = message.getMethod();
6968
var messageContent = Base64.getEncoder().encodeToString(message.getPayload().toByteArray());
70-
71-
insertDocument(createDocument("message", method, messageContent));
69+
insertDocument(liveClient, createDocument("message", method, messageContent));
7270
}
7371

74-
private void includeEvent(TikTokEvent event) {
72+
private void includeEvent(LiveClient client, TikTokEvent event) {
7573
var json = JsonUtil.toJson(event);
7674
var content = Base64.getEncoder().encodeToString(json.getBytes());
7775
var name = event.getClass().getSimpleName();
78-
insertDocument(createDocument("event", name, content));
76+
insertDocument(client, createDocument("event", name, content));
7977
}
8078

81-
private void includeError(TikTokErrorEvent event) {
79+
private void includeError(LiveClient client, TikTokErrorEvent event) {
8280
var exception = event.getException();
8381
var exceptionName = event.getException().getClass().getSimpleName();
8482

8583
var sw = new StringWriter();
8684
var pw = new PrintWriter(sw);
8785
event.getException().printStackTrace(pw);
8886
var content = sw.toString();
89-
90-
var doc = createDocument("error", exceptionName, content);
87+
var contentBase64 = Base64.getEncoder().encodeToString(content.getBytes());
88+
var doc = createDocument("error", exceptionName, contentBase64);
9189
if (exception instanceof TikTokLiveMessageException ex) {
9290
doc.append("message", ex.messageToBase64())
9391
.append("response", ex.webcastResponseToBase64());
9492
}
95-
insertDocument(doc);
93+
insertDocument(client, doc);
9694
}
9795

9896

99-
private void insertDocument(Document document) {
100-
if (!settings.getFilter().apply(document)) {
97+
private void insertDocument(LiveClient client, Document document) {
98+
if (!settings.getFilter().execute(client, document)) {
10199
return;
102100
}
103101
storage.insert(document);
@@ -106,14 +104,15 @@ private void insertDocument(Document document) {
106104

107105
private Document createDocument(String dataType, String dataTypeName, String content) {
108106
var doc = new Document();
109-
doc.append("session", sessionId);
107+
doc.append("roomId", roomId);
110108
for (var entry : settings.getExtraFields().entrySet()) {
111109
doc.append(entry.getKey(), entry.getValue());
112110
}
113111
doc.append("tiktokUser", userName);
114112
doc.append("dataType", dataType);
115113
doc.append("dataTypeName", dataTypeName);
116114
doc.append("content", content);
115+
doc.append("createdAt", new Date());
117116
return doc;
118117
}
119118
}

0 commit comments

Comments
 (0)