Skip to content

Commit 05ce745

Browse files
committed
Changes:
LiveRoomInfo + new method getConnectionState() getting current state of connection + ListenersManager getBindingModels() renamed to getListeners() + Introducing documentation, each public interface got small documentation + New property in config .setSessionId() + New event: onReconnecting() Bugs: CommentEvent was throwing mapping exception
1 parent 6e092dd commit 05ce745

File tree

9 files changed

+75
-61
lines changed

9 files changed

+75
-61
lines changed

API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEventBuilder.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,8 @@ public interface TikTokEventBuilder<T> {
9090

9191
T onWebsocketMessage(TikTokEventConsumer<TikTokWebsocketMessageEvent> event);
9292

93+
T onReconnecting(TikTokEventConsumer<TikTokReconnectingEvent> event);
94+
9395
}
9496

9597

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package io.github.jwdeveloper.tiktok.events.messages;
2+
3+
import io.github.jwdeveloper.tiktok.annotations.EventMeta;
4+
import io.github.jwdeveloper.tiktok.annotations.EventType;
5+
import io.github.jwdeveloper.tiktok.events.base.TikTokLiveClientEvent;
6+
import lombok.Getter;
7+
8+
@Getter
9+
@EventMeta(eventType = EventType.Control)
10+
public class TikTokReconnectingEvent extends TikTokLiveClientEvent
11+
{
12+
13+
}

Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClient.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import io.github.jwdeveloper.tiktok.events.messages.TikTokDisconnectedEvent;
44
import io.github.jwdeveloper.tiktok.events.messages.TikTokErrorEvent;
5+
import io.github.jwdeveloper.tiktok.events.messages.TikTokReconnectingEvent;
56
import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveException;
67
import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveOfflineHostException;
78
import io.github.jwdeveloper.tiktok.handlers.TikTokEventObserver;
@@ -62,6 +63,7 @@ public void connect() {
6263
}
6364
catch (Exception ignored){}
6465
logger.info("Reconnecting");
66+
tikTokEventHandler.publish(this, new TikTokReconnectingEvent());
6567
this.connect();
6668
}
6769
throw e;
@@ -85,6 +87,8 @@ public void tryConnect() {
8587
logger.info("Connecting");
8688
setState(ConnectionState.CONNECTING);
8789

90+
91+
apiService.updateSessionId();
8892
var roomId = apiService.fetchRoomId(liveRoomInfo.getUserName());
8993
liveRoomInfo.setRoomId(roomId);
9094
var roomData = apiService.fetchRoomInfo();

Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,13 @@ public TikTokLiveClientBuilder onWebsocketMessage(TikTokEventConsumer<TikTokWebs
344344
tikTokEventHandler.subscribe(TikTokWebsocketMessageEvent.class, event);
345345
return this;
346346
}
347+
348+
@Override
349+
public TikTokLiveClientBuilder onReconnecting(TikTokEventConsumer<TikTokReconnectingEvent> event)
350+
{
351+
tikTokEventHandler.subscribe(TikTokReconnectingEvent.class, event);
352+
return this;
353+
}
347354
}
348355

349356

Client/src/main/java/io/github/jwdeveloper/tiktok/http/TikTokApiService.java

Lines changed: 10 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -26,45 +26,19 @@ public TikTokApiService(TikTokHttpClient apiClient, Logger logger, ClientSetting
2626
this.clientSettings = clientSettings;
2727
}
2828

29-
/*
30-
if (sessionId) {
31-
// Update sessionId
32-
this.#options.sessionId = sessionId;
33-
}
3429

35-
if (!this.#options.sessionId) {
36-
throw new Error('Missing SessionId. Please provide your current SessionId to use this feature.');
30+
public void updateSessionId()
31+
{
32+
if(clientSettings.getSessionId() == null)
33+
{
34+
return;
3735
}
38-
39-
try {
40-
// Retrieve current room_id if not connected
41-
if (!this.#isConnected) {
42-
await this.#retrieveRoomId();
43-
}
44-
45-
// Add the session cookie to the CookieJar
46-
this.#httpClient.setSessionId(this.#options.sessionId);
47-
48-
// Submit the chat request
49-
let requestParams = { ...this.#clientParams, content: text };
50-
let response = await this.#httpClient.postFormDataToWebcastApi('room/chat/', requestParams, null);
51-
52-
// Success?
53-
if (response?.status_code === 0) {
54-
return response.data;
55-
}
56-
57-
// Handle errors
58-
switch (response?.status_code) {
59-
case 20003:
60-
throw new Error('Your SessionId has expired. Please provide a new one.');
61-
default:
62-
throw new Error(`TikTok responded with status code ${response?.status_code}: ${response?.data?.message}`);
63-
}
64-
} catch (err) {
65-
throw new Error(`Failed to send chat message. ${err.message}`);
36+
if(clientSettings.getSessionId().isEmpty())
37+
{
38+
return;
6639
}
67-
*/
40+
tiktokHttpClient.setSessionId(clientSettings.getSessionId());
41+
}
6842

6943
public boolean sendMessage(String message, String sessionId) {
7044
if (sessionId.isEmpty()) {

README.md

Lines changed: 33 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Do you prefer other programming languages?
3737
<dependency>
3838
<groupId>com.github.jwdeveloper.TikTok-Live-Java</groupId>
3939
<artifactId>Client</artifactId>
40-
<version>0.0.20-Release</version>
40+
<version>0.0.22-Release</version>
4141
<scope>compile</scope>
4242
</dependency>
4343
<dependency>
@@ -118,6 +118,10 @@ public class ConfigurationExample {
118118
clientSettings.setHandleExistingMessagesOnConnect(true); // Invokes all TikTok events that had occurred before connection
119119
clientSettings.setRetryOnConnectionFailure(true); // Reconnecting if TikTok user is offline
120120
clientSettings.setRetryConnectionTimeout(Duration.ofSeconds(1)); // Timeout before next reconnection
121+
122+
// Optional: Sometimes not every messages from chat are send to TikTokLiveJava to fix this issue you can set sessionId
123+
// documentation how to obtain sessionId https://github.com/isaackogan/TikTok-Live-Connector#send-chat-messages
124+
clientSettings.setSessionId("86c3c8bf4b17ebb2d74bb7fa66fd0000");
121125
})
122126
.buildAndRun();
123127
System.in.read();
@@ -135,6 +139,7 @@ import io.github.jwdeveloper.tiktok.events.TikTokEvent;
135139
import io.github.jwdeveloper.tiktok.events.messages.TikTokCommentEvent;
136140
import io.github.jwdeveloper.tiktok.events.messages.TikTokErrorEvent;
137141
import io.github.jwdeveloper.tiktok.events.messages.TikTokGiftMessageEvent;
142+
import io.github.jwdeveloper.tiktok.events.messages.TikTokLikeEvent;
138143
import io.github.jwdeveloper.tiktok.listener.TikTokEventListener;
139144
import io.github.jwdeveloper.tiktok.live.LiveClient;
140145

@@ -164,6 +169,11 @@ public class ListenerExample
164169
public static class CustomListener implements TikTokEventListener
165170
{
166171

172+
@TikTokEventHandler
173+
public void onLike(LiveClient liveClient, TikTokLikeEvent event)
174+
{
175+
System.out.println(event.toString());
176+
}
167177

168178
@TikTokEventHandler
169179
public void onError(LiveClient liveClient, TikTokErrorEvent event)
@@ -197,7 +207,7 @@ public class ListenerExample
197207
## Methods
198208
A `client (LiveClient)` object contains the following methods.
199209

200-
{{methods}}
210+
201211

202212
| Method Name | Description |
203213
|---------------------| ----------- |
@@ -206,32 +216,11 @@ A `client (LiveClient)` object contains the following methods.
206216
| getGiftManager | Gets the meta informations about all gifts. |
207217
| getRoomInfo | Gets the current room info from TikTok API including streamer info, room status and statistics. |
208218
| getListenersManager | Gets and manage TikTokEventListeners |
209-
210219
## Events
211220

212221
A `TikTokLive` object has the following events
213222

214223

215-
**Custom**:
216-
- [TikTokHeaderEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokHeaderEvent.java)
217-
- [TikTokUnhandledSocialEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledSocialEvent.java)
218-
- [TikTokLivePausedEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLivePausedEvent.java)
219-
- [TikTokLikeEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLikeEvent.java)
220-
- [TikTokWebsocketMessageEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokWebsocketMessageEvent.java)
221-
- [TikTokSubscribeEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubscribeEvent.java)
222-
- [TikTokFollowEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokFollowEvent.java)
223-
- [TikTokLiveClientEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLiveClientEvent.java)
224-
- [TikTokUnhandledEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledEvent.java)
225-
- [TikTokLiveEndedEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLiveEndedEvent.java)
226-
- [TikTokJoinEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokJoinEvent.java)
227-
- [TikTokShareEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShareEvent.java)
228-
- [TikTokUnhandledControlEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledControlEvent.java)
229-
230-
**Control**:
231-
- [TikTokConnectedEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokConnectedEvent.java)
232-
- [TikTokErrorEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokErrorEvent.java)
233-
- [TikTokDisconnectedEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDisconnectedEvent.java)
234-
235224
**Message**:
236225
- [TikTokLinkMicFanTicketEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicFanTicketEvent.java)
237226
- [TikTokEnvelopeEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEnvelopeEvent.java)
@@ -263,6 +252,27 @@ A `TikTokLive` object has the following events
263252
- [TikTokGiftBroadcastEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftBroadcastEvent.java)
264253
- [TikTokUnhandledWebsocketMessageEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledWebsocketMessageEvent.java)
265254

255+
**Control**:
256+
- [TikTokConnectedEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokConnectedEvent.java)
257+
- [TikTokReconnectingEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokReconnectingEvent.java)
258+
- [TikTokErrorEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokErrorEvent.java)
259+
- [TikTokDisconnectedEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDisconnectedEvent.java)
260+
261+
**Custom**:
262+
- [TikTokHeaderEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokHeaderEvent.java)
263+
- [TikTokUnhandledSocialEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledSocialEvent.java)
264+
- [TikTokLivePausedEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLivePausedEvent.java)
265+
- [TikTokLikeEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLikeEvent.java)
266+
- [TikTokWebsocketMessageEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokWebsocketMessageEvent.java)
267+
- [TikTokSubscribeEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubscribeEvent.java)
268+
- [TikTokFollowEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokFollowEvent.java)
269+
- [TikTokLiveClientEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLiveClientEvent.java)
270+
- [TikTokUnhandledEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledEvent.java)
271+
- [TikTokLiveEndedEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLiveEndedEvent.java)
272+
- [TikTokJoinEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokJoinEvent.java)
273+
- [TikTokShareEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShareEvent.java)
274+
- [TikTokUnhandledControlEvent](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledControlEvent.java)
275+
266276

267277
<br><br>
268278

TestApplication/src/main/java/io/github/jwdeveloper/tiktok/ConfigurationExample.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@ public static void main(String[] args) throws IOException {
2020
clientSettings.setHandleExistingMessagesOnConnect(true); // Invokes all TikTok events that had occurred before connection
2121
clientSettings.setRetryOnConnectionFailure(true); // Reconnecting if TikTok user is offline
2222
clientSettings.setRetryConnectionTimeout(Duration.ofSeconds(1)); // Timeout before next reconnection
23+
24+
//Optional: Sometimes not every messages from chat are send to TikTokLiveJava to fix this issue you can set sessionId
25+
// documentation how to obtain sessionId https://github.com/isaackogan/TikTok-Live-Connector#send-chat-messages
26+
clientSettings.setSessionId("86c3c8bf4b17ebb2d74bb7fa66fd0000");
2327
})
2428
.buildAndRun();
2529
System.in.read();

Tools-ReadmeGenerator/src/main/java/io/github/jwdeveloper/tiktok/Main.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@ public static void main(String[] args)
66
{
77
var generator = new ReadmeGenerator();
88
generator.generate();
9+
910
}
1011
}

Tools-ReadmeGenerator/src/main/resources/template.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ Do you prefer other programming languages?
6767
## Methods
6868
A `client (LiveClient)` object contains the following methods.
6969

70-
{{methods}}
70+
7171

7272
| Method Name | Description |
7373
|---------------------| ----------- |
@@ -76,7 +76,6 @@ A `client (LiveClient)` object contains the following methods.
7676
| getGiftManager | Gets the meta informations about all gifts. |
7777
| getRoomInfo | Gets the current room info from TikTok API including streamer info, room status and statistics. |
7878
| getListenersManager | Gets and manage TikTokEventListeners |
79-
8079
## Events
8180

8281
A `TikTokLive` object has the following events

0 commit comments

Comments
 (0)