1717import java .io .PrintWriter ;
1818import java .io .StringWriter ;
1919import java .util .Base64 ;
20- import java .util .UUID ;
20+ import java .util .Date ;
2121
2222public 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