Test application

This commit is contained in:
JW
2023-08-16 19:28:42 +02:00
parent f1b143fa06
commit b1c7828a2a
15 changed files with 134 additions and 155 deletions

View File

@@ -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;
}

View File

@@ -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<TikTokLiveCli
private String userName;
private final ClientSettings clientSettings;
private Map<String, Object> 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<TikTokLiveCli
validate();
var meta = new TikTokLiveMeta();
var meta = new TikTokRoomInfo();
meta.setUserName(userName);
@@ -115,7 +114,7 @@ public class TikTokLiveClientBuilder implements TikTokEventBuilder<TikTokLiveCli
public LiveClient buildAndRun() {
var client = build();
client.run();
client.connect();
return client;
}

View File

@@ -2,7 +2,7 @@ package io.github.jwdeveloper.tiktok.http;
import com.google.gson.Gson;
import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveException;
import io.github.jwdeveloper.tiktok.live.LiveRoomInfo;
import io.github.jwdeveloper.tiktok.live.LiveRoomMeta;
import io.github.jwdeveloper.tiktok.models.gifts.TikTokGift;
import io.github.jwdeveloper.tiktok.messages.WebcastResponse;
@@ -57,22 +57,22 @@ public class TikTokApiService {
}
public LiveRoomInfo fetchRoomInfo() {
public LiveRoomMeta fetchRoomInfo() {
logger.info("Fetch RoomInfo");
try {
var response = apiClient.GetJObjectFromWebcastAPI("room/info/", clientParams);
if (!response.has("data")) {
return new LiveRoomInfo();
return new LiveRoomMeta();
}
var data = response.getAsJsonObject("data");
if (!data.has("status")) {
return new LiveRoomInfo();
return new LiveRoomMeta();
}
var status = data.get("status");
var info = new LiveRoomInfo();
var info = new LiveRoomMeta();
info.setStatus(status.getAsInt());
logger.info("RoomInfo status -> "+info.getStatus());

View File

@@ -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<String> 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);
}
}