From 3e555a502a5e17f343188c67504a51cf3a820490 Mon Sep 17 00:00:00 2001 From: "jacek.wolniewicz" Date: Thu, 4 Jul 2024 11:51:45 +0200 Subject: [PATCH] - add comments next to magic numbers --- .../tiktok/TikTokLiveClientBuilder.java | 4 +- .../tiktok/TikTokLiveHttpClient.java | 4 +- .../listener/TikTokListenersManager.java | 2 +- .../mappers/TikTokGenericEventMapper.java | 4 +- .../tiktok/mappers/TikTokLiveMapper.java | 3 +- .../handlers/TikTokGiftEventHandler.java | 1 - .../tiktok/TikTokLiveClientTests.java | 110 ++++++++++++++++++ tools-readme/src/main/resources/template.md | 3 - 8 files changed, 118 insertions(+), 13 deletions(-) create mode 100644 Client/src/test/java/io/github/jwdeveloper/tiktok/TikTokLiveClientTests.java 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 0bffa0e..a01d5dc 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java @@ -99,7 +99,7 @@ public class TikTokLiveClientBuilder implements LiveClientBuilder { //TODO 250 Magic number if (clientSettings.getPingInterval() < 250) - throw new TikTokLiveException("Minimum allowed ping interval is 250 millseconds"); + throw new TikTokLiveException("Minimum allowed ping interval is 250 milliseconds"); var httpSettings = clientSettings.getHttpSettings(); httpSettings.getParams().put("app_language", clientSettings.getClientLanguage()); @@ -176,12 +176,10 @@ public class TikTokLiveClientBuilder implements LiveClientBuilder { dependance.registerSingleton(LiveClient.class, TikTokLiveClient.class); onCustomDependencies.forEach(action -> action.accept(dependance)); - var container = dependance.build(); var listenerManager = container.find(ListenersManager.class); listeners.forEach(listenerManager::addListener); - return container.find(LiveClient.class); } diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveHttpClient.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveHttpClient.java index 2637e3f..b1ccee8 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveHttpClient.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveHttpClient.java @@ -136,7 +136,7 @@ public class TikTokLiveHttpClient implements LiveHttpClient var url = TIKTOK_URL_WEB + "api-live/user/room"; var result = httpFactory.client(url) .withParam("uniqueId", request.getUserName()) - .withParam("sourceType", "54") + .withParam("sourceType", "54") //MAGIC NUMBER, WHAT 54 means? .build() .toJsonResponse(); @@ -218,7 +218,7 @@ public class TikTokLiveHttpClient implements LiveHttpClient private ActionResult> getByteResponse(String room_id) { HttpClientBuilder builder = httpFactory.client(TIKTOK_SIGN_API) .withParam("client", "ttlive-java") - .withParam("uuc", "1") + .withParam("uuc", "1") //MAGIC NUMBER! .withParam("room_id", room_id); if (clientSettings.getApiKey() != null) diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/listener/TikTokListenersManager.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/listener/TikTokListenersManager.java index 8ec5bee..fd167d7 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/listener/TikTokListenersManager.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/listener/TikTokListenersManager.java @@ -129,7 +129,7 @@ public class TikTokListenersManager implements ListenersManager { var methodContainer = dependanceContainer.createChildContainer() .configure(configuration -> { - //Modfying container, so it returns TikTokEvent object instance, + //Modifying container, so it returns TikTokEvent object instance, //when TikTokEvent type is encountered in the methods parameters configuration.onInjection(injectionEvent -> { diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokGenericEventMapper.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokGenericEventMapper.java index a7e8a0c..0ec2843 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokGenericEventMapper.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokGenericEventMapper.java @@ -53,7 +53,7 @@ public class TikTokGenericEventMapper { private final Map, Method> methodCache; private final Map> constructorCache; - + private static final String PARSE_FIELD = "parseFrom"; public TikTokGenericEventMapper() { this.methodCache = new HashMap<>(); this.constructorCache = new HashMap<>(); @@ -75,7 +75,7 @@ public class TikTokGenericEventMapper { public Method getParsingMethod(Class input) throws RuntimeException { return methodCache.computeIfAbsent(input, aClass -> { try { - return aClass.getDeclaredMethod("parseFrom", byte[].class); + return aClass.getDeclaredMethod(PARSE_FIELD, byte[].class); } catch (NoSuchMethodException e) { throw new RuntimeException(e); } diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokLiveMapper.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokLiveMapper.java index e12f748..db9ea4b 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokLiveMapper.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/TikTokLiveMapper.java @@ -34,11 +34,12 @@ public class TikTokLiveMapper implements LiveMapper { private final Map mappers; private final LiveMapperHelper mapperUtils; private final TikTokLiveMapperModel globalMapperModel; + private static final String GLOBAL_MESSAGE = "GLOBAL MESSAGE"; public TikTokLiveMapper(LiveMapperHelper mapperUtils) { this.mappers = new HashMap<>(); this.mapperUtils = mapperUtils; - this.globalMapperModel = new TikTokLiveMapperModel("any message"); + this.globalMapperModel = new TikTokLiveMapperModel(GLOBAL_MESSAGE); } @Override diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/handlers/TikTokGiftEventHandler.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/handlers/TikTokGiftEventHandler.java index cd4293d..91526b3 100644 --- a/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/handlers/TikTokGiftEventHandler.java +++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/mappers/handlers/TikTokGiftEventHandler.java @@ -38,7 +38,6 @@ import java.util.*; public class TikTokGiftEventHandler { private final Map giftsMessages; private final TikTokRoomInfo tikTokRoomInfo; - private final GiftsManager giftsManager; public TikTokGiftEventHandler(GiftsManager giftsManager, TikTokRoomInfo tikTokRoomInfo) { diff --git a/Client/src/test/java/io/github/jwdeveloper/tiktok/TikTokLiveClientTests.java b/Client/src/test/java/io/github/jwdeveloper/tiktok/TikTokLiveClientTests.java new file mode 100644 index 0000000..0510619 --- /dev/null +++ b/Client/src/test/java/io/github/jwdeveloper/tiktok/TikTokLiveClientTests.java @@ -0,0 +1,110 @@ +package io.github.jwdeveloper.tiktok; + +import io.github.jwdeveloper.tiktok.data.requests.LiveData; +import io.github.jwdeveloper.tiktok.data.settings.LiveClientSettings; +import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveException; +import io.github.jwdeveloper.tiktok.http.LiveHttpClient; +import io.github.jwdeveloper.tiktok.listener.ListenersManager; +import io.github.jwdeveloper.tiktok.live.GiftsManager; +import io.github.jwdeveloper.tiktok.live.LiveClient; +import io.github.jwdeveloper.tiktok.live.LiveEventsHandler; +import io.github.jwdeveloper.tiktok.live.LiveMessagesHandler; +import io.github.jwdeveloper.tiktok.models.ConnectionState; +import io.github.jwdeveloper.tiktok.websocket.LiveSocketClient; +import org.junit.Assert; +import org.junit.Before; +import org.junit.Test; +import org.mockito.Mockito; + +import java.util.logging.Logger; + +public class TikTokLiveClientTests { + + private LiveClient sut; + LiveMessagesHandler messageHandler; + GiftsManager giftsManager; + TikTokRoomInfo tikTokLiveMeta; + LiveHttpClient tiktokHttpClient; + LiveSocketClient webSocketClient; + LiveEventsHandler tikTokEventHandler; + LiveClientSettings clientSettings; + ListenersManager listenersManager; + Logger logger; + + @Before + public void onBefore() { + messageHandler = Mockito.mock(LiveMessagesHandler.class); + giftsManager = Mockito.mock(GiftsManager.class); + tikTokLiveMeta = Mockito.mock(TikTokRoomInfo.class); + tiktokHttpClient = Mockito.mock(LiveHttpClient.class); + webSocketClient = Mockito.mock(LiveSocketClient.class); + tikTokEventHandler = Mockito.mock(LiveEventsHandler.class); + clientSettings = Mockito.mock(LiveClientSettings.class); + listenersManager = Mockito.mock(ListenersManager.class); + logger = Mockito.mock(Logger.class); + + sut = new TikTokLiveClient(messageHandler, + giftsManager, + tikTokLiveMeta, + tiktokHttpClient, + webSocketClient, + tikTokEventHandler, + clientSettings, + listenersManager, + logger); + } + + + @Test + public void shouldThrownWhenAlreadyConnected() { + tikTokLiveMeta.setConnectionState(ConnectionState.CONNECTED); + Assert.assertThrows(TikTokLiveException.class, () -> + { + sut.connect(); + }); + } + + @Test + public void shouldThrowWhenUserIsOffline() { + + var request = new LiveData.Request("X"); + var response = new LiveData.Response(); + response.setLiveStatus(LiveData.LiveStatus.HostOffline); + Mockito.when(tiktokHttpClient.fetchLiveData(request)).thenReturn(response); + Assert.assertThrows(TikTokLiveException.class, () -> + { + sut.connect(); + }); + } + + @Test + public void shouldThrowWhenUserNotFound() + { + var request = new LiveData.Request("X"); + var response = new LiveData.Response(); + response.setLiveStatus(LiveData.LiveStatus.HostNotFound); + Mockito.when(tiktokHttpClient.fetchLiveData(request)).thenReturn(response); + Assert.assertThrows(TikTokLiveException.class, () -> + { + sut.connect(); + }); + } + + @Test + public void shouldThrowWhenAgeRestricted() + { + Mockito.when(tiktokHttpClient.fetchLiveData(new LiveData.Request("X"))) + .thenReturn(new LiveData.Response()); + Assert.assertThrows(TikTokLiveException.class, () -> + { + sut.connect(); + }); + } + + + @Test + public void shouldConnect() { + // sut.connect(); + } + +} diff --git a/tools-readme/src/main/resources/template.md b/tools-readme/src/main/resources/template.md index c496dad..e94236f 100644 --- a/tools-readme/src/main/resources/template.md +++ b/tools-readme/src/main/resources/template.md @@ -88,8 +88,6 @@ Do you prefer other programming languages? {{if item is 2}} -my name is {{item.name}} - {{else}} {{end}} @@ -98,7 +96,6 @@ my name is {{item.name}}
## Listeners - ```java {{listener-content}} ```