diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokCommentEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokCommentEvent.java
index a1516be..5388d15 100644
--- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokCommentEvent.java
+++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokCommentEvent.java
@@ -47,11 +47,23 @@ public class TikTokCommentEvent extends TikTokHeaderEvent {
public TikTokCommentEvent(WebcastChatMessage msg) {
super(msg.getCommon());
- user = User.map(msg.getUser(),msg.getUserIdentity());
+ user = User.map(msg.getUser(), msg.getUserIdentity());
text = msg.getContent();
visibleToSender = msg.getVisibleToSender();
getUserLanguage = msg.getContentLanguage();
mentionedUser = User.map(msg.getAtUser());
pictures = msg.getEmotesListList().stream().map(e -> Picture.map(e.getEmote().getImage())).toList();
}
+
+
+ public static TikTokCommentEvent of(String userName, String message) {
+ var builder = WebcastChatMessage.newBuilder();
+ builder.setUser(io.github.jwdeveloper.tiktok.messages.data.User.newBuilder()
+ .setNickname(userName)
+ .build());
+ builder.setContentLanguage("en");
+ builder.setVisibleToSender(true);
+ builder.setContent(message);
+ return new TikTokCommentEvent(builder.build());
+ }
}
diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokSubscribeEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokSubscribeEvent.java
index b545eba..fde3819 100644
--- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokSubscribeEvent.java
+++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokSubscribeEvent.java
@@ -36,10 +36,10 @@ import lombok.Getter;
*/
@Getter
@EventMeta(eventType = EventType.Message)
-public class TikTokSubscribeEvent extends TikTokHeaderEvent
-{
+public class TikTokSubscribeEvent extends TikTokHeaderEvent {
private final User user;
+
public TikTokSubscribeEvent(WebcastMemberMessage msg) {
super(msg.getCommon());
user = User.map(msg.getUser());
@@ -52,4 +52,11 @@ public class TikTokSubscribeEvent extends TikTokHeaderEvent
user.addAttribute(UserAttribute.Subscriber);
}
+ public static TikTokSubscribeEvent of(String userName) {
+ return new TikTokSubscribeEvent(WebcastMemberMessage.newBuilder()
+ .setUser(io.github.jwdeveloper.tiktok.messages.data.User.newBuilder()
+ .setNickname(userName)
+ .build())
+ .build());
+ }
}
diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/gift/TikTokGiftEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/gift/TikTokGiftEvent.java
index 9acafa1..3b3cd0b 100644
--- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/gift/TikTokGiftEvent.java
+++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/gift/TikTokGiftEvent.java
@@ -70,6 +70,6 @@ public class TikTokGiftEvent extends TikTokHeaderEvent {
}
public static TikTokGiftEvent of(String name, int id, int diamonds) {
- return null;
+ return TikTokGiftEvent.of(new Gift(id, name, diamonds, ""));
}
}
\ No newline at end of file
diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/social/TikTokFollowEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/social/TikTokFollowEvent.java
index c1715d5..5cbe573 100644
--- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/social/TikTokFollowEvent.java
+++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/social/TikTokFollowEvent.java
@@ -24,8 +24,10 @@ package io.github.jwdeveloper.tiktok.data.events.social;
import io.github.jwdeveloper.tiktok.annotations.EventMeta;
import io.github.jwdeveloper.tiktok.annotations.EventType;
+import io.github.jwdeveloper.tiktok.data.events.TikTokSubscribeEvent;
import io.github.jwdeveloper.tiktok.data.events.common.TikTokHeaderEvent;
import io.github.jwdeveloper.tiktok.data.models.users.User;
+import io.github.jwdeveloper.tiktok.messages.webcast.WebcastMemberMessage;
import io.github.jwdeveloper.tiktok.messages.webcast.WebcastSocialMessage;
import lombok.Value;
@@ -45,4 +47,12 @@ public class TikTokFollowEvent extends TikTokHeaderEvent
totalFollowers = msg.getFollowCount();
}
+ public static TikTokFollowEvent of(String userName)
+ {
+ return new TikTokFollowEvent(WebcastSocialMessage.newBuilder()
+ .setUser(io.github.jwdeveloper.tiktok.messages.data.User.newBuilder()
+ .setNickname(userName)
+ .build())
+ .build());
+ }
}
diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/social/TikTokJoinEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/social/TikTokJoinEvent.java
index 700e27a..d55a764 100644
--- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/social/TikTokJoinEvent.java
+++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/social/TikTokJoinEvent.java
@@ -26,6 +26,7 @@ import io.github.jwdeveloper.tiktok.annotations.EventMeta;
import io.github.jwdeveloper.tiktok.annotations.EventType;
import io.github.jwdeveloper.tiktok.data.events.common.TikTokHeaderEvent;
import io.github.jwdeveloper.tiktok.data.models.users.User;
+import io.github.jwdeveloper.tiktok.messages.webcast.WebcastLikeMessage;
import io.github.jwdeveloper.tiktok.messages.webcast.WebcastMemberMessage;
import io.github.jwdeveloper.tiktok.messages.webcast.WebcastSocialMessage;
import lombok.Getter;
@@ -47,4 +48,13 @@ public class TikTokJoinEvent extends TikTokHeaderEvent {
user = User.map(msg.getUser());
totalUsers = msg.getMemberCount();
}
+
+ public static TikTokJoinEvent of(String userName)
+ {
+ return new TikTokJoinEvent(WebcastMemberMessage.newBuilder()
+ .setUser(io.github.jwdeveloper.tiktok.messages.data.User.newBuilder()
+ .setNickname(userName)
+ .build())
+ .build());
+ }
}
diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/social/TikTokLikeEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/social/TikTokLikeEvent.java
index 6c64270..ce93b44 100644
--- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/social/TikTokLikeEvent.java
+++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/events/social/TikTokLikeEvent.java
@@ -57,4 +57,15 @@ public class TikTokLikeEvent extends TikTokHeaderEvent
likes = msg.getCount();
totalLikes = msg.getTotal();
}
+
+ public static TikTokLikeEvent of(String userName, int likes)
+ {
+ return new TikTokLikeEvent(WebcastLikeMessage.newBuilder()
+ .setCount(likes)
+ .setTotal(likes)
+ .setUser(io.github.jwdeveloper.tiktok.messages.data.User.newBuilder()
+ .setNickname(userName)
+ .build())
+ .build());
+ }
}
diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/requests/LiveData.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/requests/LiveData.java
index 9e72b94..c884f06 100644
--- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/requests/LiveData.java
+++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/requests/LiveData.java
@@ -35,6 +35,7 @@ public class LiveData {
}
@Data
+ @AllArgsConstructor
public static class Response {
private String json;
private LiveStatus liveStatus;
@@ -45,6 +46,11 @@ public class LiveData {
private boolean ageRestricted;
private User host;
private LiveType liveType;
+ public Response() {
+
+ }
+
+
}
public enum LiveStatus {
diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/data/settings/LiveClientSettings.java b/API/src/main/java/io/github/jwdeveloper/tiktok/data/settings/LiveClientSettings.java
index 3020eea..3ac9b9d 100644
--- a/API/src/main/java/io/github/jwdeveloper/tiktok/data/settings/LiveClientSettings.java
+++ b/API/src/main/java/io/github/jwdeveloper/tiktok/data/settings/LiveClientSettings.java
@@ -35,6 +35,16 @@ public class LiveClientSettings {
/**
+ * TODO: give better description
+ *
+ * sets client in the offline mode, so it do not connects to TikTok servers
+ * it makes sense to use it when you are testing client with your custom events
+ */
+ private boolean offline;
+
+ /**
+ * TODO: give better description
+ *
* Determines if gifts data is downloaded before TikTokLive starts,
* when `false` then client.giftManager() does not contain initial gifts
*/
@@ -76,14 +86,13 @@ public class LiveClientSettings {
private HttpClientSettings httpSettings;
/**
- * Optional: Sometimes not every messages from chat are send to TikTokLiveJava to fix this issue you can set sessionId
- * documentation how to obtain sessionId https://github.com/isaackogan/TikTok-Live-Connector#send-chat-messages
+ * Optional: Sometimes not every messages from chat are send to TikTokLiveJava to fix this issue you can set sessionId
+ * documentation how to obtain sessionId https://github.com/isaackogan/TikTok-Live-Connector#send-chat-messages
*/
private String sessionId;
/**
* Optional: By default roomID is fetched before connect to live, but you can set it manually
- *
*/
private String roomId;
@@ -92,8 +101,7 @@ public class LiveClientSettings {
*/
private String apiKey;
- public static LiveClientSettings createDefault()
- {
+ public static LiveClientSettings createDefault() {
var httpSettings = new HttpClientSettings();
httpSettings.getParams().putAll(DefaultClientParams());
httpSettings.getHeaders().putAll(DefaultRequestHeaders());
@@ -166,4 +174,6 @@ public class LiveClientSettings {
headers.put("Accept-Language", "en-US,en; q=0.9");
return headers;
}
+
+
}
\ No newline at end of file
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 9826653..0ec4dff 100644
--- a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClient.java
+++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClient.java
@@ -33,6 +33,7 @@ import io.github.jwdeveloper.tiktok.data.requests.LiveConnectionData;
import io.github.jwdeveloper.tiktok.data.requests.LiveData;
import io.github.jwdeveloper.tiktok.data.requests.LiveUserData;
import io.github.jwdeveloper.tiktok.exceptions.*;
+import io.github.jwdeveloper.tiktok.http.LiveHttpClient;
import io.github.jwdeveloper.tiktok.listener.ListenersManager;
import io.github.jwdeveloper.tiktok.listener.TikTokListenersManager;
import io.github.jwdeveloper.tiktok.live.GiftsManager;
@@ -48,7 +49,7 @@ import java.util.logging.Logger;
public class TikTokLiveClient implements LiveClient {
private final TikTokRoomInfo liveRoomInfo;
- private final TikTokLiveHttpClient httpClient;
+ private final LiveHttpClient httpClient;
private final SocketClient webSocketClient;
private final TikTokLiveEventHandler tikTokEventHandler;
private final LiveClientSettings clientSettings;
@@ -58,7 +59,7 @@ public class TikTokLiveClient implements LiveClient {
public TikTokLiveClient(GiftsManager giftsManager,
TikTokRoomInfo tikTokLiveMeta,
- TikTokLiveHttpClient tiktokHttpClient,
+ LiveHttpClient tiktokHttpClient,
SocketClient webSocketClient,
TikTokLiveEventHandler tikTokEventHandler,
LiveClientSettings clientSettings,
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 306febc..b4ffd82 100644
--- a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java
+++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java
@@ -45,6 +45,7 @@ import io.github.jwdeveloper.tiktok.mappers.data.MappingResult;
import io.github.jwdeveloper.tiktok.mappers.handlers.*;
import io.github.jwdeveloper.tiktok.messages.webcast.*;
import io.github.jwdeveloper.tiktok.websocket.TikTokWebSocketClient;
+import io.github.jwdeveloper.tiktok.websocket.TikTokWebSocketOfflineClient;
import java.util.*;
import java.util.concurrent.CompletableFuture;
@@ -54,7 +55,7 @@ import java.util.logging.Logger;
public class TikTokLiveClientBuilder implements LiveClientBuilder {
protected final LiveClientSettings clientSettings;
- protected final TikTokLiveEventHandler tikTokEventHandler;
+ protected final TikTokLiveEventHandler eventHandler;
protected final List listeners;
protected Consumer onCustomMappings;
protected Logger logger;
@@ -63,7 +64,7 @@ public class TikTokLiveClientBuilder implements LiveClientBuilder {
public TikTokLiveClientBuilder(String userName) {
this.clientSettings = LiveClientSettings.createDefault();
this.clientSettings.setHostName(userName);
- this.tikTokEventHandler = new TikTokLiveEventHandler();
+ this.eventHandler = new TikTokLiveEventHandler();
this.listeners = new ArrayList<>();
this.onCustomMappings = (e) -> {
};
@@ -109,27 +110,30 @@ public class TikTokLiveClientBuilder implements LiveClientBuilder {
var tiktokRoomInfo = new TikTokRoomInfo();
tiktokRoomInfo.setHostName(clientSettings.getHostName());
- var listenerManager = new TikTokListenersManager(listeners, tikTokEventHandler);
+ var listenerManager = new TikTokListenersManager(listeners, eventHandler);
var httpClientFactory = new HttpClientFactory(clientSettings);
- var tikTokLiveHttpClient = new TikTokLiveHttpClient(httpClientFactory, clientSettings);
+ var liveHttpClient = clientSettings.isOffline() ?
+ new TikTokLiveHttpOfflineClient() :
+ new TikTokLiveHttpClient(httpClientFactory, clientSettings);
var eventsMapper = createMapper(giftsManager, tiktokRoomInfo);
- var messageHandler = new TikTokLiveMessageHandler(tikTokEventHandler, eventsMapper);
+ var messageHandler = new TikTokLiveMessageHandler(eventHandler, eventsMapper);
-
- var webSocketClient = new TikTokWebSocketClient(
- clientSettings,
- messageHandler,
- tikTokEventHandler);
+ var webSocketClient = clientSettings.isOffline() ?
+ new TikTokWebSocketOfflineClient(eventHandler) :
+ new TikTokWebSocketClient(
+ clientSettings,
+ messageHandler,
+ eventHandler);
return new TikTokLiveClient(
giftsManager,
tiktokRoomInfo,
- tikTokLiveHttpClient,
+ liveHttpClient,
webSocketClient,
- tikTokEventHandler,
+ eventHandler,
clientSettings,
listenerManager,
logger);
@@ -235,255 +239,255 @@ public class TikTokLiveClientBuilder implements LiveClientBuilder {
}
public TikTokLiveClientBuilder onUnhandledSocial(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokUnhandledSocialEvent.class, event);
+ eventHandler.subscribe(TikTokUnhandledSocialEvent.class, event);
return this;
}
public LiveClientBuilder onChest(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokChestEvent.class, event);
+ eventHandler.subscribe(TikTokChestEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onLinkMicFanTicket(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokLinkMicFanTicketEvent.class, event);
+ eventHandler.subscribe(TikTokLinkMicFanTicketEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onEnvelope(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokEnvelopeEvent.class, event);
+ eventHandler.subscribe(TikTokEnvelopeEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onShop(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokShopEvent.class, event);
+ eventHandler.subscribe(TikTokShopEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onDetect(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokDetectEvent.class, event);
+ eventHandler.subscribe(TikTokDetectEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onLinkLayer(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokLinkLayerEvent.class, event);
+ eventHandler.subscribe(TikTokLinkLayerEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onConnected(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokConnectedEvent.class, event);
+ eventHandler.subscribe(TikTokConnectedEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onPreConnection(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokPreConnectionEvent.class, event);
+ eventHandler.subscribe(TikTokPreConnectionEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onCaption(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokCaptionEvent.class, event);
+ eventHandler.subscribe(TikTokCaptionEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onQuestion(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokQuestionEvent.class, event);
+ eventHandler.subscribe(TikTokQuestionEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onRoomPin(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokRoomPinEvent.class, event);
+ eventHandler.subscribe(TikTokRoomPinEvent.class, event);
return this;
}
@Override
public LiveClientBuilder onEvent(Class eventClass, EventConsumer event) {
- tikTokEventHandler.subscribe(eventClass, event);
+ eventHandler.subscribe(eventClass, event);
return this;
}
@Override
public TikTokLiveClientBuilder onRoomInfo(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokRoomInfoEvent.class, event);
+ eventHandler.subscribe(TikTokRoomInfoEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onLivePaused(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokLivePausedEvent.class, event);
+ eventHandler.subscribe(TikTokLivePausedEvent.class, event);
return this;
}
@Override
public TikTokLiveClientBuilder onLiveUnpaused(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokLiveUnpausedEvent.class, event);
+ eventHandler.subscribe(TikTokLiveUnpausedEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onLike(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokLikeEvent.class, event);
+ eventHandler.subscribe(TikTokLikeEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onLink(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokLinkEvent.class, event);
+ eventHandler.subscribe(TikTokLinkEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onBarrage(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokBarrageEvent.class, event);
+ eventHandler.subscribe(TikTokBarrageEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onGift(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokGiftEvent.class, event);
+ eventHandler.subscribe(TikTokGiftEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onGiftCombo(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokGiftComboEvent.class, event);
+ eventHandler.subscribe(TikTokGiftComboEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onLinkMicArmies(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokLinkMicArmiesEvent.class, event);
+ eventHandler.subscribe(TikTokLinkMicArmiesEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onEmote(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokEmoteEvent.class, event);
+ eventHandler.subscribe(TikTokEmoteEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onUnauthorizedMember(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokUnauthorizedMemberEvent.class, event);
+ eventHandler.subscribe(TikTokUnauthorizedMemberEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onInRoomBanner(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokInRoomBannerEvent.class, event);
+ eventHandler.subscribe(TikTokInRoomBannerEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onLinkMicMethod(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokLinkMicMethodEvent.class, event);
+ eventHandler.subscribe(TikTokLinkMicMethodEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onSubscribe(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokSubscribeEvent.class, event);
+ eventHandler.subscribe(TikTokSubscribeEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onPoll(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokPollEvent.class, event);
+ eventHandler.subscribe(TikTokPollEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onFollow(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokFollowEvent.class, event);
+ eventHandler.subscribe(TikTokFollowEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onComment(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokCommentEvent.class, event);
+ eventHandler.subscribe(TikTokCommentEvent.class, event);
return this;
}
@Override
public LiveClientBuilder onHttpResponse(EventConsumer action) {
- tikTokEventHandler.subscribe(TikTokHttpResponseEvent.class, action);
+ eventHandler.subscribe(TikTokHttpResponseEvent.class, action);
return this;
}
public TikTokLiveClientBuilder onGoalUpdate(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokGoalUpdateEvent.class, event);
+ eventHandler.subscribe(TikTokGoalUpdateEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onRankUpdate(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokRankUpdateEvent.class, event);
+ eventHandler.subscribe(TikTokRankUpdateEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onIMDelete(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokIMDeleteEvent.class, event);
+ eventHandler.subscribe(TikTokIMDeleteEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onLiveEnded(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokLiveEndedEvent.class, event);
+ eventHandler.subscribe(TikTokLiveEndedEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onError(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokErrorEvent.class, event);
+ eventHandler.subscribe(TikTokErrorEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onJoin(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokJoinEvent.class, event);
+ eventHandler.subscribe(TikTokJoinEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onRankText(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokRankTextEvent.class, event);
+ eventHandler.subscribe(TikTokRankTextEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onShare(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokShareEvent.class, event);
+ eventHandler.subscribe(TikTokShareEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onUnhandledMember(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokUnhandledMemberEvent.class, event);
+ eventHandler.subscribe(TikTokUnhandledMemberEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onSubNotify(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokSubNotifyEvent.class, event);
+ eventHandler.subscribe(TikTokSubNotifyEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onLinkMicBattle(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokLinkMicBattleEvent.class, event);
+ eventHandler.subscribe(TikTokLinkMicBattleEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onDisconnected(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokDisconnectedEvent.class, event);
+ eventHandler.subscribe(TikTokDisconnectedEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onUnhandledControl(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokUnhandledControlEvent.class, event);
+ eventHandler.subscribe(TikTokUnhandledControlEvent.class, event);
return this;
}
public TikTokLiveClientBuilder onEvent(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokEvent.class, event);
+ eventHandler.subscribe(TikTokEvent.class, event);
return this;
}
@Override
public TikTokLiveClientBuilder onWebsocketResponse(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokWebsocketResponseEvent.class, event);
+ eventHandler.subscribe(TikTokWebsocketResponseEvent.class, event);
return this;
}
@Override
public TikTokLiveClientBuilder onWebsocketMessage(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokWebsocketMessageEvent.class, event);
+ eventHandler.subscribe(TikTokWebsocketMessageEvent.class, event);
return this;
}
@Override
public TikTokLiveClientBuilder onWebsocketUnhandledMessage(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokWebsocketUnhandledMessageEvent.class, event);
+ eventHandler.subscribe(TikTokWebsocketUnhandledMessageEvent.class, event);
return this;
}
@Override
public TikTokLiveClientBuilder onReconnecting(EventConsumer event) {
- tikTokEventHandler.subscribe(TikTokReconnectingEvent.class, event);
+ eventHandler.subscribe(TikTokReconnectingEvent.class, event);
return this;
}
}
\ No newline at end of file
diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveHttpOfflineClient.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveHttpOfflineClient.java
new file mode 100644
index 0000000..c5fb961
--- /dev/null
+++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveHttpOfflineClient.java
@@ -0,0 +1,45 @@
+package io.github.jwdeveloper.tiktok;
+
+import io.github.jwdeveloper.tiktok.data.models.Picture;
+import io.github.jwdeveloper.tiktok.data.models.users.User;
+import io.github.jwdeveloper.tiktok.data.requests.GiftsData;
+import io.github.jwdeveloper.tiktok.data.requests.LiveConnectionData;
+import io.github.jwdeveloper.tiktok.data.requests.LiveData;
+import io.github.jwdeveloper.tiktok.data.requests.LiveUserData;
+import io.github.jwdeveloper.tiktok.http.LiveHttpClient;
+import io.github.jwdeveloper.tiktok.messages.webcast.WebcastResponse;
+
+import java.net.URI;
+import java.util.List;
+
+public class TikTokLiveHttpOfflineClient implements LiveHttpClient {
+ @Override
+ public GiftsData.Response fetchGiftsData() {
+ return new GiftsData.Response("", List.of());
+ }
+
+ @Override
+ public LiveUserData.Response fetchLiveUserData(LiveUserData.Request request) {
+ return new LiveUserData.Response("", LiveUserData.UserStatus.Live, "offline_room_id", 0);
+ }
+
+ @Override
+ public LiveData.Response fetchLiveData(LiveData.Request request) {
+ return new LiveData.Response("",
+ LiveData.LiveStatus.HostOnline,
+ "offline live",
+ 0,
+ 0,
+ 0,
+ false,
+ new User(0L, "offline user", new Picture("")),
+ LiveData.LiveType.SOLO);
+ }
+
+ @Override
+ public LiveConnectionData.Response fetchLiveConnectionData(LiveConnectionData.Request request) {
+ return new LiveConnectionData.Response("",
+ URI.create("https://example.live"),
+ WebcastResponse.newBuilder().build());
+ }
+}
diff --git a/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketOfflineClient.java b/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketOfflineClient.java
new file mode 100644
index 0000000..d30dddc
--- /dev/null
+++ b/Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/TikTokWebSocketOfflineClient.java
@@ -0,0 +1,31 @@
+package io.github.jwdeveloper.tiktok.websocket;
+
+import io.github.jwdeveloper.tiktok.TikTokLiveEventHandler;
+import io.github.jwdeveloper.tiktok.data.events.TikTokConnectedEvent;
+import io.github.jwdeveloper.tiktok.data.events.TikTokDisconnectedEvent;
+import io.github.jwdeveloper.tiktok.data.requests.LiveConnectionData;
+import io.github.jwdeveloper.tiktok.live.LiveClient;
+
+public class TikTokWebSocketOfflineClient implements SocketClient {
+
+ private final TikTokLiveEventHandler handler;
+ private LiveClient liveClient;
+
+ public TikTokWebSocketOfflineClient(TikTokLiveEventHandler handler) {
+ this.handler = handler;
+ }
+
+ @Override
+ public void start(LiveConnectionData.Response webcastResponse, LiveClient tikTokLiveClient) {
+ liveClient = tikTokLiveClient;
+ handler.publish(liveClient, new TikTokConnectedEvent());
+ }
+
+ @Override
+ public void stop() {
+ if (liveClient == null) {
+ return;
+ }
+ handler.publish(liveClient, new TikTokDisconnectedEvent());
+ }
+}
diff --git a/Examples/pom.xml b/Examples/pom.xml
index 231f9a8..add2230 100644
--- a/Examples/pom.xml
+++ b/Examples/pom.xml
@@ -78,12 +78,6 @@
1.3.0-Release
compile
-
- io.github.jwdeveloper.worker
- extension-tester
- 1.3.0-Release
- compile
-
diff --git a/Examples/src/main/java/io/github/jwdeveloper/tiktok/ChatMessageExample.java b/Examples/src/main/java/io/github/jwdeveloper/tiktok/ChatMessageExample.java
deleted file mode 100644
index d7e69ac..0000000
--- a/Examples/src/main/java/io/github/jwdeveloper/tiktok/ChatMessageExample.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com
- *
- * Permission is hereby granted, free of charge, to any person obtaining
- * a copy of this software and associated documentation files (the
- * "Software"), to deal in the Software without restriction, including
- * without limitation the rights to use, copy, modify, merge, publish,
- * distribute, sublicense, and/or sell copies of the Software, and to
- * permit persons to whom the Software is furnished to do so, subject to
- * the following conditions:
- *
- * The above copyright notice and this permission notice shall be
- * included in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-package io.github.jwdeveloper.tiktok;
-
-import java.time.Duration;
-
-public class ChatMessageExample {
- public static void main(String[] args) {
-
-
- var roomData = TikTokLive.requests()
- .fetchLiveData("X");
-
- var gifts = TikTokLive.requests().fetchGiftsData();
-
-
- var user = TikTokLive.requests()
- .fetchLiveUserData("mark");
-
- TikTokLive.newClient(SimpleExample.TIKTOK_HOSTNAME)
- .configure(clientSettings ->
- {
- clientSettings.setPrintToConsole(true);
- clientSettings.getHttpSettings().setTimeout(Duration.ofSeconds(21));
- })
- .onComment((liveClient, event) ->
- {
- System.out.println("Chat message: " + event.getUser().getName() + " " + event.getText());
- })
- .onWebsocketUnhandledMessage((liveClient, event) ->
- {
- liveClient.getLogger().info(event.getMessage().getMethod());
- }).buildAndConnect();
- }
-}
diff --git a/Examples/src/main/java/io/github/jwdeveloper/tiktok/SimpleExample.java b/Examples/src/main/java/io/github/jwdeveloper/tiktok/ConnectionExample.java
similarity index 96%
rename from Examples/src/main/java/io/github/jwdeveloper/tiktok/SimpleExample.java
rename to Examples/src/main/java/io/github/jwdeveloper/tiktok/ConnectionExample.java
index ca45379..9e7ebe5 100644
--- a/Examples/src/main/java/io/github/jwdeveloper/tiktok/SimpleExample.java
+++ b/Examples/src/main/java/io/github/jwdeveloper/tiktok/ConnectionExample.java
@@ -31,7 +31,7 @@ import java.io.IOException;
import java.time.Duration;
import java.util.logging.Level;
-public class SimpleExample {
+public class ConnectionExample {
public static String TIKTOK_HOSTNAME = "kvadromama_marina1";
public static void main(String[] args) throws IOException {
@@ -40,10 +40,10 @@ public class SimpleExample {
var gifts = TikTokLive.gifts();
- TikTokLive.newClient(SimpleExample.TIKTOK_HOSTNAME)
+ TikTokLive.newClient(ConnectionExample.TIKTOK_HOSTNAME)
.configure(clientSettings ->
{
- clientSettings.setHostName(SimpleExample.TIKTOK_HOSTNAME); // This method is useful in case you want change hostname later
+ clientSettings.setHostName(ConnectionExample.TIKTOK_HOSTNAME); // This method is useful in case you want change hostname later
clientSettings.setClientLanguage("en"); // Language
clientSettings.setLogLevel(Level.ALL); // Log level
clientSettings.setPrintToConsole(true); // Printing all logs to console even if log level is Level.OFF
diff --git a/Examples/src/main/java/io/github/jwdeveloper/tiktok/CustomEventExample.java b/Examples/src/main/java/io/github/jwdeveloper/tiktok/CustomEventExample.java
index ec38858..3e6ece2 100644
--- a/Examples/src/main/java/io/github/jwdeveloper/tiktok/CustomEventExample.java
+++ b/Examples/src/main/java/io/github/jwdeveloper/tiktok/CustomEventExample.java
@@ -39,7 +39,7 @@ public class CustomEventExample {
public static void main(String[] args)
{
- TikTokLive.newClient(SimpleExample.TIKTOK_HOSTNAME)
+ TikTokLive.newClient(ConnectionExample.TIKTOK_HOSTNAME)
.configure(clientSettings ->
{
clientSettings.setPrintToConsole(true);
diff --git a/Examples/src/main/java/io/github/jwdeveloper/tiktok/Events_And_Gifts_Testing_Example.java b/Examples/src/main/java/io/github/jwdeveloper/tiktok/Events_And_Gifts_Testing_Example.java
new file mode 100644
index 0000000..306d1ee
--- /dev/null
+++ b/Examples/src/main/java/io/github/jwdeveloper/tiktok/Events_And_Gifts_Testing_Example.java
@@ -0,0 +1,68 @@
+package io.github.jwdeveloper.tiktok;
+
+import io.github.jwdeveloper.tiktok.data.events.TikTokCommentEvent;
+import io.github.jwdeveloper.tiktok.data.events.TikTokSubNotifyEvent;
+import io.github.jwdeveloper.tiktok.data.events.TikTokSubscribeEvent;
+import io.github.jwdeveloper.tiktok.data.events.gift.TikTokGiftEvent;
+import io.github.jwdeveloper.tiktok.data.events.social.TikTokFollowEvent;
+import io.github.jwdeveloper.tiktok.data.events.social.TikTokJoinEvent;
+import io.github.jwdeveloper.tiktok.data.events.social.TikTokLikeEvent;
+import io.github.jwdeveloper.tiktok.live.LiveClient;
+
+public class Events_And_Gifts_Testing_Example {
+ public static void main(String[] args)
+ {
+ LiveClient client = TikTokLive.newClient(ConnectionExample.TIKTOK_HOSTNAME)
+ .configure(liveClientSettings ->
+ {
+ liveClientSettings.setOffline(true);
+ liveClientSettings.setPrintToConsole(true);
+ })
+ .onConnected((liveClient, event) ->
+ {
+ liveClient.getLogger().info("Connected");
+ })
+ .onDisconnected((liveClient, event) ->
+ {
+ liveClient.getLogger().info("Disconnected");
+ })
+ .onGiftCombo((liveClient, event) ->
+ {
+ liveClient.getLogger().info("Connected");
+ })
+ .onGift((liveClient, event) ->
+ {
+ liveClient.getLogger().info("New fakeGift: " + event.getGift());
+ })
+ .buildAndConnect();
+
+ var gifts = TikTokLive.gifts();
+ var fakeGift = TikTokGiftEvent.of(gifts.getByName("Rose"));
+ fakeGift = TikTokGiftEvent.of("Rose", 1, 23);
+
+ var fakeMessage = TikTokCommentEvent.of("Mark", "Hello world");
+
+ var fakeSubscriber = TikTokSubscribeEvent.of("Mark");
+ var fakeFollow = TikTokFollowEvent.of("Mark");
+ var fakeLike = TikTokLikeEvent.of("Mark", 12);
+ var fakeJoin = TikTokJoinEvent.of("Mark");
+
+
+ client.publishEvent(fakeGift);
+ client.publishEvent(fakeMessage);
+ client.publishEvent(fakeSubscriber);
+ client.publishEvent(fakeFollow);
+ client.publishEvent(fakeLike);
+ client.publishEvent(fakeJoin);
+
+ client.disconnect();
+ }
+
+
+
+
+
+ public void GetBuilder() {
+
+ }
+}
diff --git a/Examples/src/main/java/io/github/jwdeveloper/tiktok/GiftTestingExample.java b/Examples/src/main/java/io/github/jwdeveloper/tiktok/GiftTestingExample.java
deleted file mode 100644
index 1345208..0000000
--- a/Examples/src/main/java/io/github/jwdeveloper/tiktok/GiftTestingExample.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package io.github.jwdeveloper.tiktok;
-
-import io.github.jwdeveloper.tiktok.data.events.gift.TikTokGiftEvent;
-import io.github.jwdeveloper.tiktok.live.LiveClient;
-
-public class GiftTestingExample {
-
-
- public static void main(String[] args) throws Exception {
- LiveClient client = TikTokLive.newClient(SimpleExample.TIKTOK_HOSTNAME)
- .configure(liveClientSettings ->
- {
- // liveClientSettings.setOffline(true);
- })
- .onConnected((liveClient, event) ->
- {
- liveClient.getLogger().info("Connected");
- })
- .onGiftCombo((liveClient, event) ->
- {
-
- })
- .onGift((liveClient, event) ->
- {
- liveClient.getLogger().info("New fakeGift: " + event.getGift());
- })
- .buildAndConnect();
-
- var gifts = TikTokLive.gifts();
- var fakeGift = TikTokGiftEvent.of(gifts.getByName("Rose"));
- var fakeGift2 = TikTokGiftEvent.of("Rose", 1, 23);
- client.publishEvent(fakeGift);
- client.publishEvent(fakeGift2);
- }
-
-
- public void GetTesterBuilder() {
-
- }
-
-
- public void GetBuilder() {
-
- }
-}
diff --git a/Examples/src/main/java/io/github/jwdeveloper/tiktok/ListenerExample.java b/Examples/src/main/java/io/github/jwdeveloper/tiktok/ListenerExample.java
index b74638a..d12111e 100644
--- a/Examples/src/main/java/io/github/jwdeveloper/tiktok/ListenerExample.java
+++ b/Examples/src/main/java/io/github/jwdeveloper/tiktok/ListenerExample.java
@@ -48,7 +48,7 @@ public class ListenerExample
showLogo();
CustomListener customListener = new CustomListener();
- TikTokLive.newClient(SimpleExample.TIKTOK_HOSTNAME)
+ TikTokLive.newClient(ConnectionExample.TIKTOK_HOSTNAME)
.addListener(customListener)
.buildAndConnect();
System.in.read();
diff --git a/Examples/src/main/java/io/github/jwdeveloper/tiktok/ProxyExample.java b/Examples/src/main/java/io/github/jwdeveloper/tiktok/ProxyExample.java
index c911354..9db5c94 100644
--- a/Examples/src/main/java/io/github/jwdeveloper/tiktok/ProxyExample.java
+++ b/Examples/src/main/java/io/github/jwdeveloper/tiktok/ProxyExample.java
@@ -26,7 +26,7 @@ import java.net.Proxy;
public class ProxyExample {
public static void main(String[] args) throws Exception {
- TikTokLive.newClient(SimpleExample.TIKTOK_HOSTNAME)
+ TikTokLive.newClient(ConnectionExample.TIKTOK_HOSTNAME)
.configure(clientSettings -> {
clientSettings.setPrintToConsole(true);
clientSettings.getHttpSettings().configureProxy(proxySettings -> {
diff --git a/Examples/src/main/java/io/github/jwdeveloper/tiktok/TestingGiftsExample.java b/Examples/src/main/java/io/github/jwdeveloper/tiktok/TestingGiftsExample.java
deleted file mode 100644
index cce9c63..0000000
--- a/Examples/src/main/java/io/github/jwdeveloper/tiktok/TestingGiftsExample.java
+++ /dev/null
@@ -1,4 +0,0 @@
-package io.github.jwdeveloper.tiktok;
-
-public class TestingGiftsExample {
-}
diff --git a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/tester/mockClient/TikTokMockBuilder.java b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/tester/mockClient/TikTokMockBuilder.java
index ba214eb..cf48b63 100644
--- a/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/tester/mockClient/TikTokMockBuilder.java
+++ b/Tools-EventsCollector/src/main/java/io/github/jwdeveloper/tiktok/tools/tester/mockClient/TikTokMockBuilder.java
@@ -86,15 +86,15 @@ public class TikTokMockBuilder extends TikTokLiveClientBuilder {
var tiktokRoomInfo = new TikTokRoomInfo();
tiktokRoomInfo.setHostName(clientSettings.getHostName());
- var listenerManager = new TikTokListenersManager(listeners, tikTokEventHandler);
+ var listenerManager = new TikTokListenersManager(listeners, eventHandler);
var mapper = createMapper(new TikTokGiftsManager(List.of()), tiktokRoomInfo);
- var handler = new TikTokLiveMessageHandler(tikTokEventHandler, mapper);
+ var handler = new TikTokLiveMessageHandler(eventHandler, mapper);
var webSocketClient = new WebsocketClientMock(logger, responses, handler);
return new LiveClientMock(tiktokRoomInfo,
new TikTokLiveHttpClient(),
webSocketClient,
- tikTokEventHandler,
+ eventHandler,
clientSettings,
listenerManager,
logger);
diff --git a/extension-collector/src/main/java/io/github/jwdeveloper/tiktok/extension/collector/impl/TikTokLiveDataCollector.java b/extension-collector/src/main/java/io/github/jwdeveloper/tiktok/extension/collector/impl/TikTokLiveDataCollector.java
index d9899b7..f369ff6 100644
--- a/extension-collector/src/main/java/io/github/jwdeveloper/tiktok/extension/collector/impl/TikTokLiveDataCollector.java
+++ b/extension-collector/src/main/java/io/github/jwdeveloper/tiktok/extension/collector/impl/TikTokLiveDataCollector.java
@@ -50,7 +50,6 @@ public class TikTokLiveDataCollector {
this.settings = settings;
}
-
public void connectDatabase() {
var serverApi = ServerApi.builder()
.version(ServerApiVersion.V1)
diff --git a/pom.xml b/pom.xml
index 447a9b1..00bf394 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,7 +18,6 @@
extension-recorder
extension-collector
- extension-tester