diff --git a/API/pom.xml b/API/pom.xml
index 1ac9ac9..55c398c 100644
--- a/API/pom.xml
+++ b/API/pom.xml
@@ -11,25 +11,6 @@
API
-
- org.projectlombok
- lombok
- 1.18.22
- compile
-
-
- junit
- junit
- 4.13.1
- test
-
-
- org.testng
- testng
- RELEASE
- test
-
-
com.google.protobuf
protobuf-java
diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveClient.java b/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveClient.java
index d49299a..cdc7f5c 100644
--- a/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveClient.java
+++ b/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveClient.java
@@ -2,9 +2,9 @@ package io.github.jwdeveloper.tiktok.live;
public interface LiveClient {
- void run();
+ void connect();
- void stop();
+ void disconnect();
- LiveMeta getMeta();
+ LiveRoomInfo getRoomInfo();
}
diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveMeta.java b/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveMeta.java
deleted file mode 100644
index bd636eb..0000000
--- a/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveMeta.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package io.github.jwdeveloper.tiktok.live;
-
-public interface LiveMeta
-{
- int getViewersCount();
-
- String getRoomId();
- String getUserName();
-}
diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveRoomInfo.java b/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveRoomInfo.java
index 68c7201..82b8c59 100644
--- a/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveRoomInfo.java
+++ b/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveRoomInfo.java
@@ -1,9 +1,9 @@
package io.github.jwdeveloper.tiktok.live;
-import lombok.Data;
-
-@Data
-public class LiveRoomInfo
+public interface LiveRoomInfo
{
- private int status;
+ int getViewersCount();
+
+ String getRoomId();
+ String getUserName();
}
diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveRoomMeta.java b/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveRoomMeta.java
new file mode 100644
index 0000000..a3ffe92
--- /dev/null
+++ b/API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveRoomMeta.java
@@ -0,0 +1,9 @@
+package io.github.jwdeveloper.tiktok.live;
+
+import lombok.Data;
+
+@Data
+public class LiveRoomMeta
+{
+ private int status;
+}
diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/live/TikTokLiveMeta.java b/API/src/main/java/io/github/jwdeveloper/tiktok/live/TikTokRoomInfo.java
similarity index 87%
rename from API/src/main/java/io/github/jwdeveloper/tiktok/live/TikTokLiveMeta.java
rename to API/src/main/java/io/github/jwdeveloper/tiktok/live/TikTokRoomInfo.java
index 9c1b8ec..b357207 100644
--- a/API/src/main/java/io/github/jwdeveloper/tiktok/live/TikTokLiveMeta.java
+++ b/API/src/main/java/io/github/jwdeveloper/tiktok/live/TikTokRoomInfo.java
@@ -3,7 +3,7 @@ package io.github.jwdeveloper.tiktok.live;
import lombok.Data;
@Data
-public class TikTokLiveMeta implements LiveMeta
+public class TikTokRoomInfo implements LiveRoomInfo
{
private int viewersCount;
diff --git a/Client/pom.xml b/Client/pom.xml
index cbe1c8d..bf01fc0 100644
--- a/Client/pom.xml
+++ b/Client/pom.xml
@@ -19,24 +19,7 @@
-
- org.java-websocket
- Java-WebSocket
- 1.5.4
-
-
- org.slf4j
- slf4j-api
- 1.7.0
-
-
-
- org.projectlombok
- lombok
- 1.18.22
- compile
-
com.google.code.gson
@@ -44,25 +27,6 @@
2.10.1
-
- org.mockito
- mockito-core
- 3.12.4
- test
-
-
-
- junit
- junit
- 4.13.1
- test
-
-
- org.junit.jupiter
- junit-jupiter
- RELEASE
- test
-
io.github.jwdeveloper.tiktok
API
diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClient.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClient.java
index 3b89a22..b890500 100644
--- a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClient.java
+++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClient.java
@@ -5,14 +5,14 @@ import io.github.jwdeveloper.tiktok.handlers.TikTokEventHandler;
import io.github.jwdeveloper.tiktok.http.TikTokApiService;
import io.github.jwdeveloper.tiktok.live.ConnectionState;
import io.github.jwdeveloper.tiktok.live.LiveClient;
-import io.github.jwdeveloper.tiktok.live.LiveMeta;
-import io.github.jwdeveloper.tiktok.live.TikTokLiveMeta;
+import io.github.jwdeveloper.tiktok.live.LiveRoomInfo;
+import io.github.jwdeveloper.tiktok.live.TikTokRoomInfo;
import io.github.jwdeveloper.tiktok.websocket.TikTokWebsocketClient;
import java.util.logging.Logger;
public class TikTokLiveClient implements LiveClient {
- private final TikTokLiveMeta meta;
+ private final TikTokRoomInfo meta;
private final TikTokGiftManager giftManager;
private final TikTokApiService apiClient;
private final TikTokWebsocketClient webSocketClient;
@@ -21,7 +21,7 @@ public class TikTokLiveClient implements LiveClient {
private final Logger logger;
- public TikTokLiveClient(TikTokLiveMeta tikTokLiveMeta,
+ public TikTokLiveClient(TikTokRoomInfo tikTokLiveMeta,
TikTokApiService tikTokApiService,
TikTokWebsocketClient webSocketClient,
TikTokGiftManager tikTokGiftManager,
@@ -38,28 +38,25 @@ public class TikTokLiveClient implements LiveClient {
- public void run() {
- tryConnect();
- }
-
- public void stop() {
- if (!meta.hasConnectionState(ConnectionState.CONNECTED)) {
- return;
- }
- disconnect();
- setState(ConnectionState.DISCONNECTED);
- }
-
- public void tryConnect() {
+ public void connect() {
try {
- connect();
+ tryConnect();
} catch (Exception e) {
e.printStackTrace();
setState(ConnectionState.DISCONNECTED);
}
}
- public void connect() {
+ public void disconnect() {
+ if (!meta.hasConnectionState(ConnectionState.CONNECTED)) {
+ return;
+ }
+ webSocketClient.stop();
+ setState(ConnectionState.DISCONNECTED);
+ }
+
+
+ public void tryConnect() {
if (meta.hasConnectionState(ConnectionState.CONNECTED))
throw new RuntimeException("Already connected");
if (meta.hasConnectionState(ConnectionState.CONNECTING))
@@ -82,13 +79,10 @@ public class TikTokLiveClient implements LiveClient {
setState(ConnectionState.CONNECTED);
}
- public void disconnect()
- {
- webSocketClient.stop();
- }
- public LiveMeta getMeta() {
+
+ public LiveRoomInfo getRoomInfo() {
return meta;
}
diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java
index 9bb6c3b..8ac82cd 100644
--- a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java
+++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java
@@ -10,9 +10,8 @@ import io.github.jwdeveloper.tiktok.http.TikTokCookieJar;
import io.github.jwdeveloper.tiktok.http.TikTokHttpApiClient;
import io.github.jwdeveloper.tiktok.http.TikTokHttpRequestFactory;
import io.github.jwdeveloper.tiktok.live.LiveClient;
-import io.github.jwdeveloper.tiktok.live.TikTokLiveMeta;
+import io.github.jwdeveloper.tiktok.live.TikTokRoomInfo;
import io.github.jwdeveloper.tiktok.websocket.TikTokWebsocketClient;
-import io.github.jwdeveloper.tiktok.handlers.WebResponseHandlerBase;
import java.time.Duration;
import java.util.Map;
@@ -23,8 +22,8 @@ public class TikTokLiveClientBuilder implements TikTokEventBuilder clientParameters;
- private Logger logger;
- private TikTokEventHandler tikTokEventHandler;
+ private final Logger logger;
+ private final TikTokEventHandler tikTokEventHandler;
public TikTokLiveClientBuilder(String userName) {
this.tikTokEventHandler = new TikTokEventHandler();
@@ -92,7 +91,7 @@ public class TikTokLiveClientBuilder implements TikTokEventBuilder "+info.getStatus());
diff --git a/Client/src/test/java/io/github/jwdeveloper/tiktok/http/TikTokApiServiceTest.java b/Client/src/test/java/io/github/jwdeveloper/tiktok/http/TikTokApiServiceTest.java
index 78abbf1..79bdc42 100644
--- a/Client/src/test/java/io/github/jwdeveloper/tiktok/http/TikTokApiServiceTest.java
+++ b/Client/src/test/java/io/github/jwdeveloper/tiktok/http/TikTokApiServiceTest.java
@@ -1,34 +1,20 @@
package io.github.jwdeveloper.tiktok.http;
import com.google.gson.JsonParser;
-
-import org.junit.jupiter.api.Test;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URI;
-import java.net.http.HttpClient;
-import java.net.http.HttpHeaders;
-import java.net.http.HttpRequest;
-import java.net.http.HttpResponse;
+import org.junit.Test;
import java.nio.charset.StandardCharsets;
-import java.time.Duration;
import java.util.HashMap;
-import java.util.Map;
import java.util.Scanner;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.CompletionStage;
-import java.util.concurrent.CountDownLatch;
import java.util.logging.Logger;
-import static org.junit.jupiter.api.Assertions.*;
+import static org.junit.Assert.assertNotNull;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class TikTokApiServiceTest {
@Test
- void testFetchAvailableGifts() {
+ public void testFetchAvailableGifts() {
// Arrange
var mockApiClient = mock(TikTokHttpApiClient.class);
var mockLogger = mock(Logger.class);
@@ -48,40 +34,12 @@ public class TikTokApiServiceTest {
var gifts = tikTokApiService.fetchAvailableGifts();
+
assertNotNull(gifts);
}
- @Test
- void test() throws Exception {
- HttpClient client = HttpClient.newHttpClient();
- HttpRequest request = HttpRequest.newBuilder()
- .uri(new URI("https://tiktok.eulerstream.com/webcast/fetch/?room_id=7263690606554188577&client=ttlive-net&uuc=1&apiKey=&isSignRedirect=1&iph=658d90239052e48dabc4e5b61004661e"))
- .build();
-
- HttpResponse response = client.send(request, HttpResponse.BodyHandlers.ofString());
-
- System.out.println("Response code: " + response.statusCode());
- HttpHeaders headers = response.headers();
- headers.map().forEach((k, v) -> System.out.println(k + ":" + v));
-
- System.out.println("Response body: " + response.body());
- }
-
-
- @Test
- void testws2()
- {
-
- var url = "wss://webcast16-ws-useast1a.tiktok.com/webcast/im/push/?cursor=1691243226540_7263834340956643180_1_1_0_0&room_id=7263759223213132577&app_language=en-US&focus_state=true&last_rtt=0&did_rule=3&is_fullscreen=false&from_page=user&update_version_code=1.3.0&screen_height=1152&tz_name=Europe/Berlin&cookie_enabled=true&identity=audience&browser_platform=Win32&browser_version=5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36&browser_language=en&fetch_rule=1&value=u6Laa_b3czc3iEAb4x6oLXindKyTO&internal_ext=fetch_time:1691243226540|start_time:0|ack_ids:,|flag:0|seq:1|next_cursor:1691243226540_7263834340956643180_1_1_0_0|wss_info:0-1691243226540-0-0&screen_width=2048&version_code=180800&history_len=4&webcast_sdk_version=1.3.0&msToken=&app_name=tiktok_web&browser_name=Mozilla&resp_content_type=protobuf&live_id=12&webcast_language=en-US&name=imprp&device_platform=web&is_page_visible=true&aid=1988&browser_online=true";
-
- var split = url.substring(373,url.length()-1);
-
- var i =0;
-
- var uri = URI.create(url);
- }
}
\ No newline at end of file
diff --git a/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/Main.java b/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/Main.java
index caa6026..3828beb 100644
--- a/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/Main.java
+++ b/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/Main.java
@@ -28,7 +28,7 @@ public class Main {
.buildAndRun();
- var viewers = client.getMeta().getViewersCount();
+ var viewers = client.getRoomInfo().getViewersCount();
System.in.read();
}
diff --git a/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/SimpleExample.java b/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/SimpleExample.java
new file mode 100644
index 0000000..aaac433
--- /dev/null
+++ b/TestApplication/src/main/java/io/github/jwdeveloper/tiktok/SimpleExample.java
@@ -0,0 +1,30 @@
+package io.github.jwdeveloper.tiktok;
+
+public class SimpleExample {
+ public static void main(String[] args) {
+ // Username of someone who is currently live
+ var tiktokUsername = "officialgeilegisela";
+
+ TikTokLive.newClient(tiktokUsername)
+ .clientSettings(settings ->
+ {
+ })
+ .onConnected(event ->
+ {
+ System.out.println("Connected");
+ })
+ .onJoin(event ->
+ {
+ System.out.println("User joined -> " + event.getUser().getNickName());
+ })
+ .onComment(event ->
+ {
+ System.out.println(event.getUser().getUniqueId() + ": " + event.getText());
+ })
+ .onError(event ->
+ {
+ event.getException().printStackTrace();
+ })
+ .buildAndRun();
+ }
+}
diff --git a/Tools/src/main/java/io/github/jwdeveloper/tiktok/GenerateEventsListRun.java b/Tools/src/main/java/io/github/jwdeveloper/tiktok/GenerateEventsListRun.java
new file mode 100644
index 0000000..3f6e88a
--- /dev/null
+++ b/Tools/src/main/java/io/github/jwdeveloper/tiktok/GenerateEventsListRun.java
@@ -0,0 +1,31 @@
+package io.github.jwdeveloper.tiktok;
+
+import io.github.jwdeveloper.tiktok.events.TikTokEvent;
+import org.reflections.Reflections;
+
+public class GenerateEventsListRun
+{
+
+
+ //[a](https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokBarrageMessageEvent.java)
+ //Message Events:
+ //- [member](#member)
+
+ public static void main(String[] args)
+ {
+ Reflections reflections = new Reflections("io.github.jwdeveloper.tiktok.events.messages");
+ var classes = reflections.getSubTypesOf(TikTokEvent.class);
+ classes.add(TikTokEvent.class);
+
+ var builder = new StringBuilder();
+ builder.append("Events:").append(System.lineSeparator());
+ for(var event : classes)
+ {
+ var name = event.getSimpleName();
+ var baseUrl ="https://github.com/jwdeveloper/TikTok-Live-Java/blob/master/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/"+name+".java";
+ builder.append("- [").append(name).append("](").append(baseUrl).append(")").append(System.lineSeparator());
+ }
+
+ System.out.println(builder.toString());
+ }
+}
diff --git a/pom.xml b/pom.xml
index 5a50bc9..acf3c18 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,4 +21,26 @@
UTF-8
+
+
+ org.projectlombok
+ lombok
+ 1.18.22
+ compile
+
+
+ junit
+ junit
+ 4.13.1
+ test
+
+
+ org.mockito
+ mockito-core
+ 3.12.4
+ test
+
+
+
+
\ No newline at end of file