From 4b9e531c95f9c1178b819351f0a9bc2f5bcaa5c8 Mon Sep 17 00:00:00 2001 From: JW Date: Wed, 16 Aug 2023 17:36:40 +0200 Subject: [PATCH] Events handling --- API/pom.xml | 68 +- .../tiktok/annotations/Nullable.java | 4 + .../tiktok/events/TikTokEvent.java | 41 + .../tiktok/events/TikTokEventBuilder.java | 75 + .../tiktok/events/TikTokLiveEvent.java | 8 + .../messages/TikTokBarrageMessageEvent.java | 37 + .../events/messages/TikTokCaptionEvent.java | 21 + .../events/messages/TikTokCommentEvent.java | 43 + .../events/messages/TikTokConnectedEvent.java | 8 + .../messages/TikTokDetectMessageEvent.java | 23 + .../messages/TikTokDisconnectedEvent.java | 6 + .../events/messages/TikTokEmoteEvent.java | 26 + .../events/messages/TikTokEnvelopeEvent.java | 16 + .../events/messages/TikTokFollowEvent.java | 25 + .../messages/TikTokGiftBroadcastEvent.java | 31 + .../messages/TikTokGiftMessageEvent.java | 40 + .../messages/TikTokGoalUpdateEvent.java | 29 + .../events/messages/TikTokIMDeleteEvent.java | 17 + .../messages/TikTokInRoomBannerEvent.java | 15 + .../events/messages/TikTokJoinEvent.java | 34 + .../events/messages/TikTokLikeEvent.java | 39 + .../messages/TikTokLinkLayerMessageEvent.java | 27 + .../messages/TikTokLinkMessageEvent.java | 28 + .../messages/TikTokLinkMicArmiesEvent.java | 28 + .../messages/TikTokLinkMicBattleEvent.java | 22 + .../messages/TikTokLinkMicFanTicketEvent.java | 19 + .../messages/TikTokLinkMicMethodEvent.java | 21 + .../events/messages/TikTokLiveEndedEvent.java | 6 + .../messages/TikTokLivePausedEvent.java | 6 + .../messages/TikTokPollMessageEvent.java | 28 + .../events/messages/TikTokQuestionEvent.java | 29 + .../events/messages/TikTokRankTextEvent.java | 20 + .../messages/TikTokRankUpdateEvent.java | 38 + .../messages/TikTokRoomMessageEvent.java | 44 + .../messages/TikTokRoomPinMessageEvent.java | 18 + .../messages/TikTokRoomViewerDataEvent.java | 23 + .../events/messages/TikTokShareEvent.java | 32 + .../messages/TikTokShopMessageEvent.java | 30 + .../events/messages/TikTokSubNotifyEvent.java | 21 + .../events/messages/TikTokSubscribeEvent.java | 21 + .../TikTokUnauthorizedMemberEvent.java | 33 + .../messages/TikTokUnhandledControlEvent.java | 13 + .../events/messages/TikTokUnhandledEvent.java | 14 + .../messages/TikTokUnhandledMemberEvent.java | 13 + .../messages/TikTokUnhandledSocialEvent.java | 13 + .../tiktok/events/objects/Badge.java | 41 + .../tiktok/events/objects/BarrageData.java | 29 + .../tiktok/events/objects/Gift.java | 27 + .../tiktok/events/objects/LinkMicArmy.java | 31 + .../events/objects/LinkMicBattleTeam.java | 18 + .../tiktok/events/objects/Picture.java | 25 + .../tiktok/events/objects/PollOption.java | 22 + .../tiktok/events/objects/TikTokGift.java | 25 + .../tiktok/events/objects/TopViewer.java | 22 + .../tiktok/events/objects/User.java | 87 ++ .../exceptions}/TikTokLiveException.java | 2 +- .../jwdeveloper/tiktok/live/LiveClient.java | 1 + .../tiktok/live/models/gift/LockInfo.java | 6 - .../live/models/gift/SpecialEffects.java | 4 - .../live/models/gift/TrackerParams.java | 4 - .../jwdeveloper/tiktok/models/GiftId.java | 13 + .../tiktok/models/SocialTypes.java | 9 + .../gift => models/gifts}/DefaultFormat.java | 2 +- .../gift => models/gifts}/DisplayText.java | 2 +- .../gift => models/gifts}/GiftLabelIcon.java | 2 +- .../gifts}/GiftPanelBanner.java | 2 +- .../models/gift => models/gifts}/Icon.java | 2 +- .../models/gift => models/gifts}/Image.java | 2 +- .../gift => models/gifts}/LeftIcon.java | 2 +- .../tiktok/models/gifts/LockInfo.java | 6 + .../tiktok/models/gifts/SpecialEffects.java | 4 + .../gift => models/gifts}/TikTokGift.java | 2 +- .../tiktok/models/gifts/TrackerParams.java | 4 + API/src/main/proto/tiktokSchema.proto | 1345 +++++++++++++++++ Client/pom.xml | 53 +- .../tiktok/TikTokClientBuilder.java | 97 -- .../jwdeveloper/tiktok/TikTokGiftManager.java | 13 +- .../github/jwdeveloper/tiktok/TikTokLive.java | 6 +- .../jwdeveloper/tiktok/TikTokLiveClient.java | 8 + .../tiktok/TikTokLiveClientBuilder.java | 295 ++++ .../tiktok/events/TikTokChatEvent.java | 4 - .../tiktok/events/TikTokEvent.java | 6 - .../tiktok/events/TikTokGiftEvent.java | 4 - .../tiktok/handlers/TikTokEventHandler.java | 40 + .../tiktok/handlers/TikTokMessageHandler.java | 12 + .../tiktok/handlers/WebResponseHandler.java | 149 ++ .../handlers/WebResponseHandlerBase.java | 89 ++ .../tiktok/http/TikTokApiService.java | 9 +- .../tiktok/http/TikTokCookieJar.java | 4 - .../tiktok/http/TikTokHttpApiClient.java | 6 +- .../websocket/TikTokWebSocketListener.java | 122 +- .../websocket/TikTokWebsocketClient.java | 61 +- .../tiktok/websocket/WebSocketClientTest.java | 120 ++ Client/src/main/proto/tiktokSchema.proto | 310 ---- .../tiktok/SerializeWebMessageTest.java | 29 + .../jwdeveloper/tiktok/TikTokLiveTest.java | 79 +- .../resources/WebcastWebsocketMessage.bin | 32 + Tools/pom.xml | 62 + .../tiktok/EventsGeneratorRun.java | 45 + .../tiktok/EventsInterfaceGeneratorRun.java | 20 + .../jwdeveloper/tiktok/FilesUtility.java | 38 + .../io/github/jwdeveloper/tiktok/Main.java | 8 +- .../events_generator/CSharpClassInfo.java | 28 + .../events_generator/CSharpClassParser.java | 102 ++ .../EventGeneratorSettings.java | 26 + .../events_generator/EventsGenerator.java | 60 + .../events_generator/JavaClassGenerator.java | 48 + .../intefacee/EventsInterfaceGenerator.java | 99 ++ .../tiktok/EventsGeneratorRun.class | Bin 0 -> 1943 bytes .../tiktok/EventsInterfaceGeneratorRun.class | Bin 0 -> 1420 bytes .../jwdeveloper/tiktok/FilesUtility.class | Bin 0 -> 2848 bytes .../io/github/jwdeveloper/tiktok/Main.class | Bin 0 -> 574 bytes .../CSharpClassInfo$ConstructorInfo.class | Bin 0 -> 2233 bytes .../CSharpClassInfo$FieldInfo.class | Bin 0 -> 1851 bytes .../events_generator/CSharpClassInfo.class | Bin 0 -> 4101 bytes .../events_generator/CSharpClassParser.class | Bin 0 -> 4806 bytes .../EventGeneratorSettings.class | Bin 0 -> 4409 bytes .../events_generator/EventsGenerator.class | Bin 0 -> 4001 bytes .../events_generator/JavaClassGenerator.class | Bin 0 -> 4695 bytes .../intefacee/EventsInterfaceGenerator.class | Bin 0 -> 6016 bytes pom.xml | 3 +- 121 files changed, 4368 insertions(+), 613 deletions(-) create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/annotations/Nullable.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEventBuilder.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokLiveEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokBarrageMessageEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokCaptionEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokCommentEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokConnectedEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDetectMessageEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDisconnectedEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEmoteEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEnvelopeEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokFollowEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftBroadcastEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftMessageEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGoalUpdateEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokIMDeleteEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokInRoomBannerEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokJoinEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLikeEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkLayerMessageEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMessageEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicArmiesEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicBattleEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicFanTicketEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicMethodEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLiveEndedEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLivePausedEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokPollMessageEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokQuestionEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankTextEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankUpdateEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomMessageEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomPinMessageEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomViewerDataEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShareEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShopMessageEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubNotifyEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubscribeEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnauthorizedMemberEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledControlEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledMemberEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledSocialEvent.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Badge.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/BarrageData.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Gift.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/LinkMicArmy.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/LinkMicBattleTeam.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Picture.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/PollOption.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/TikTokGift.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/TopViewer.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/User.java rename {Client/src/main/java/io/github/jwdeveloper/tiktok => API/src/main/java/io/github/jwdeveloper/tiktok/exceptions}/TikTokLiveException.java (92%) delete mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/live/models/gift/LockInfo.java delete mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/live/models/gift/SpecialEffects.java delete mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/live/models/gift/TrackerParams.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/models/GiftId.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/models/SocialTypes.java rename API/src/main/java/io/github/jwdeveloper/tiktok/{live/models/gift => models/gifts}/DefaultFormat.java (84%) rename API/src/main/java/io/github/jwdeveloper/tiktok/{live/models/gift => models/gifts}/DisplayText.java (79%) rename API/src/main/java/io/github/jwdeveloper/tiktok/{live/models/gift => models/gifts}/GiftLabelIcon.java (85%) rename API/src/main/java/io/github/jwdeveloper/tiktok/{live/models/gift => models/gifts}/GiftPanelBanner.java (80%) rename API/src/main/java/io/github/jwdeveloper/tiktok/{live/models/gift => models/gifts}/Icon.java (84%) rename API/src/main/java/io/github/jwdeveloper/tiktok/{live/models/gift => models/gifts}/Image.java (85%) rename API/src/main/java/io/github/jwdeveloper/tiktok/{live/models/gift => models/gifts}/LeftIcon.java (85%) create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/LockInfo.java create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/SpecialEffects.java rename API/src/main/java/io/github/jwdeveloper/tiktok/{live/models/gift => models/gifts}/TikTokGift.java (96%) create mode 100644 API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/TrackerParams.java create mode 100644 API/src/main/proto/tiktokSchema.proto delete mode 100644 Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokClientBuilder.java create mode 100644 Client/src/main/java/io/github/jwdeveloper/tiktok/TikTokLiveClientBuilder.java delete mode 100644 Client/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokChatEvent.java delete mode 100644 Client/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEvent.java delete mode 100644 Client/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokGiftEvent.java create mode 100644 Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/TikTokEventHandler.java create mode 100644 Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/TikTokMessageHandler.java create mode 100644 Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/WebResponseHandler.java create mode 100644 Client/src/main/java/io/github/jwdeveloper/tiktok/handlers/WebResponseHandlerBase.java create mode 100644 Client/src/main/java/io/github/jwdeveloper/tiktok/websocket/WebSocketClientTest.java delete mode 100644 Client/src/main/proto/tiktokSchema.proto create mode 100644 Client/src/test/java/io/github/jwdeveloper/tiktok/SerializeWebMessageTest.java create mode 100644 Client/src/test/resources/WebcastWebsocketMessage.bin create mode 100644 Tools/pom.xml create mode 100644 Tools/src/main/java/io/github/jwdeveloper/tiktok/EventsGeneratorRun.java create mode 100644 Tools/src/main/java/io/github/jwdeveloper/tiktok/EventsInterfaceGeneratorRun.java create mode 100644 Tools/src/main/java/io/github/jwdeveloper/tiktok/FilesUtility.java rename {Client => Tools}/src/main/java/io/github/jwdeveloper/tiktok/Main.java (55%) create mode 100644 Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/CSharpClassInfo.java create mode 100644 Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/CSharpClassParser.java create mode 100644 Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/EventGeneratorSettings.java create mode 100644 Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/EventsGenerator.java create mode 100644 Tools/src/main/java/io/github/jwdeveloper/tiktok/events_generator/JavaClassGenerator.java create mode 100644 Tools/src/main/java/io/github/jwdeveloper/tiktok/intefacee/EventsInterfaceGenerator.java create mode 100644 Tools/target/classes/io/github/jwdeveloper/tiktok/EventsGeneratorRun.class create mode 100644 Tools/target/classes/io/github/jwdeveloper/tiktok/EventsInterfaceGeneratorRun.class create mode 100644 Tools/target/classes/io/github/jwdeveloper/tiktok/FilesUtility.class create mode 100644 Tools/target/classes/io/github/jwdeveloper/tiktok/Main.class create mode 100644 Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/CSharpClassInfo$ConstructorInfo.class create mode 100644 Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/CSharpClassInfo$FieldInfo.class create mode 100644 Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/CSharpClassInfo.class create mode 100644 Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/CSharpClassParser.class create mode 100644 Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/EventGeneratorSettings.class create mode 100644 Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/EventsGenerator.class create mode 100644 Tools/target/classes/io/github/jwdeveloper/tiktok/events_generator/JavaClassGenerator.class create mode 100644 Tools/target/classes/io/github/jwdeveloper/tiktok/intefacee/EventsInterfaceGenerator.class diff --git a/API/pom.xml b/API/pom.xml index 46b39fa..1ac9ac9 100644 --- a/API/pom.xml +++ b/API/pom.xml @@ -4,7 +4,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> TikTokLiveJava - org.example + io.github.jwdeveloper.tiktok 1.0-SNAPSHOT 4.0.0 @@ -17,6 +17,24 @@ 1.18.22 compile + + junit + junit + 4.13.1 + test + + + org.testng + testng + RELEASE + test + + + + com.google.protobuf + protobuf-java + 3.8.0 + @@ -25,4 +43,52 @@ UTF-8 + + target/generated-sources + + + kr.motd.maven + os-maven-plugin + 1.7.0 + + + initialize + + detect + + + + + + + + com.github.os72 + protoc-jar-maven-plugin + 3.11.4 + + + generate-sources + + run + + + all + direct + + src/main + + + src/main/proto + + + + + + + + + + + + \ No newline at end of file diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/annotations/Nullable.java b/API/src/main/java/io/github/jwdeveloper/tiktok/annotations/Nullable.java new file mode 100644 index 0000000..716cf6b --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/annotations/Nullable.java @@ -0,0 +1,4 @@ +package io.github.jwdeveloper.tiktok.annotations; + +public @interface Nullable { +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEvent.java new file mode 100644 index 0000000..c70cc90 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEvent.java @@ -0,0 +1,41 @@ +package io.github.jwdeveloper.tiktok.events; + +import io.github.jwdeveloper.tiktok.messages.*; +import lombok.Getter; + +@Getter +public class TikTokEvent { + private long messageId; + private long roomId; + private long timeStamp; + + public TikTokEvent(MessageHeader header) { + this(header.getMessageId(),header.getRoomId(), header.getTimeStamp1()); + } + + public TikTokEvent(GiftMessageHeader header) { + this(header.getMessageId(),header.getRoomId(), header.getTimeStamp1()); + } + + public TikTokEvent(MemberMessageHeader header) { + this(header.getMessageId(),header.getRoomId(), header.getTimeStamp1()); + } + + public TikTokEvent(SocialMessageHeader header) { + this(header.getMessageId(),header.getRoomId(), header.getTimeStamp1()); + } + + public TikTokEvent(LikeMessageHeader header) { + this(header.getMessageId(),header.getRoomId(), header.getTimeStamp1()); + } + + public TikTokEvent(long messageId, long roomId, long timeStamp) { + this.messageId = messageId; + this.roomId = roomId; + this.timeStamp = timeStamp; + } + + public TikTokEvent() { + + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEventBuilder.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEventBuilder.java new file mode 100644 index 0000000..17dd64d --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEventBuilder.java @@ -0,0 +1,75 @@ +package io.github.jwdeveloper.tiktok.events; + +import io.github.jwdeveloper.tiktok.events.messages.*; + +import java.util.function.Consumer; + + + +public interface TikTokEventBuilder { + T onLinkMicFanTicket(Consumer event); + + T onEnvelope(Consumer event); + + T onShopMessage(Consumer event); + + T onDetectMessage(Consumer event); + + T onLinkLayerMessage(Consumer event); + + T onCaption(Consumer event); + + T onQuestion(Consumer event); + + T onRoomPinMessage(Consumer event); + + T onRoomMessage(Consumer event); + + T onLike(Consumer event); + + T onLinkMessage(Consumer event); + + T onBarrageMessage(Consumer event); + + T onGiftMessage(Consumer event); + + T onLinkMicArmies(Consumer event); + + T onEmote(Consumer event); + + T onUnauthorizedMember(Consumer event); + + T onInRoomBanner(Consumer event); + + T onLinkMicMethod(Consumer event); + + T onSubscribe(Consumer event); + + T onPollMessage(Consumer event); + + T onFollow(Consumer event); + + T onRoomViewerData(Consumer event); + + T onGoalUpdate(Consumer event); + + T onComment(Consumer event); + + T onRankUpdate(Consumer event); + + T onIMDelete(Consumer event); + + T onJoin(Consumer event); + + T onRankText(Consumer event); + + T onShare(Consumer event); + + T onSubNotify(Consumer event); + + T onLinkMicBattle(Consumer event); + + T onGiftBroadcast(Consumer event); +} + + diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokLiveEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokLiveEvent.java new file mode 100644 index 0000000..57ecd9a --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokLiveEvent.java @@ -0,0 +1,8 @@ +package io.github.jwdeveloper.tiktok.events; + +import io.github.jwdeveloper.tiktok.live.LiveClient; + +public interface TikTokLiveEvent +{ + void onEvent(LiveClient liveClient, T event); +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokBarrageMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokBarrageMessageEvent.java new file mode 100644 index 0000000..3ab5f85 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokBarrageMessageEvent.java @@ -0,0 +1,37 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.BarrageData; +import io.github.jwdeveloper.tiktok.events.objects.Picture; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.WebcastBarrageMessage; +import lombok.Getter; + +@Getter +public class TikTokBarrageMessageEvent extends TikTokEvent { + private final Picture picture; + + private final Picture picture2; + + private final Picture picture3; + + private final User user; + private final BarrageData barrageData; + + public TikTokBarrageMessageEvent(WebcastBarrageMessage msg) { + super(msg.getHeader()); + + picture = new Picture(msg.getPicture()); + picture2 = new Picture(msg.getPicture2()); + picture3 = new Picture(msg.getPicture3()); + user = new User(msg.getUserData().getUser()); + barrageData = new BarrageData(msg.getMessage().getEventType(), + msg.getMessage().getLabel(), + msg.getMessage().getData1List().stream().map(e -> + { + var user = new User(e.getUser().getUser()); + return new BarrageData.BarrageUser(user, e.getData2()); + }).toList() + ); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokCaptionEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokCaptionEvent.java new file mode 100644 index 0000000..b67c203 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokCaptionEvent.java @@ -0,0 +1,21 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.messages.WebcastCaptionMessage; +import lombok.Getter; + +@Getter +public class TikTokCaptionEvent extends TikTokEvent { + private final Long captionTimeStamp; + + private final String iSOLanguage; + + private final String text; + + public TikTokCaptionEvent(WebcastCaptionMessage msg) { + super(msg.getHeader()); + captionTimeStamp = msg.getTimeStamp(); + iSOLanguage = msg.getCaptionData().getISOLanguage(); + text = msg.getCaptionData().getText(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokCommentEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokCommentEvent.java new file mode 100644 index 0000000..cb68495 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokCommentEvent.java @@ -0,0 +1,43 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.annotations.Nullable; +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.Picture; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.WebcastChatMessage; +import io.github.jwdeveloper.tiktok.messages.WebcastRoomPinMessage; +import lombok.Getter; + +import java.util.ArrayList; +import java.util.List; + +@Getter +public class TikTokCommentEvent extends TikTokEvent +{ + @Nullable + private User user; + private final String text; + private final String language; + private final List mentionedUsers; + private final List pictures; + + public TikTokCommentEvent(WebcastRoomPinMessage.RoomPinMessageData data) { + super(data.getDetails().getRoomId(), data.getDetails().getMessageId(), data.getDetails().getServerTime()); + if (data.hasSender()) + user = new User(data.getSender()); + text = data.getComment(); + language = data.getLanguage(); + mentionedUsers = new ArrayList<>(); + pictures = new ArrayList<>(); + } + + public TikTokCommentEvent(WebcastChatMessage msg) { + super(msg.getHeader()); + if (msg.hasSender()) + user = new User(msg.getSender()); + text = msg.getComment(); + language = msg.getLanguage(); + mentionedUsers = msg.getMentionedUsersList().stream().map(User::new).toList(); + pictures = msg.getImagesList().stream().map(e -> new Picture(e.getPicture())).toList(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokConnectedEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokConnectedEvent.java new file mode 100644 index 0000000..e9d50d7 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokConnectedEvent.java @@ -0,0 +1,8 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; + +public class TikTokConnectedEvent extends TikTokEvent +{ + +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDetectMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDetectMessageEvent.java new file mode 100644 index 0000000..bd7d884 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDetectMessageEvent.java @@ -0,0 +1,23 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.messages.WebcastMsgDetectMessage; +import lombok.Getter; + +import java.util.List; + +@Getter +public class TikTokDetectMessageEvent extends TikTokEvent { + private final String language; + + private final List data; + + private final List timings; + + public TikTokDetectMessageEvent(WebcastMsgDetectMessage msg) { + super(msg.getHeader());; + language = msg.getLanguage(); + data = List.of(msg.getData2().getData1(), msg.getData2().getData2(), msg.getData2().getData3()); + timings= List.of(msg.getTimestamps().getTimestamp1(), msg.getTimestamps().getTimestamp2(), msg.getTimestamps().getTimestamp3()); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDisconnectedEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDisconnectedEvent.java new file mode 100644 index 0000000..525fa31 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDisconnectedEvent.java @@ -0,0 +1,6 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; + +public class TikTokDisconnectedEvent extends TikTokEvent { +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEmoteEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEmoteEvent.java new file mode 100644 index 0000000..28d2a2a --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEmoteEvent.java @@ -0,0 +1,26 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.annotations.Nullable; +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.Picture; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.WebcastEmoteChatMessage; +import lombok.Getter; + +@Getter +public class TikTokEmoteEvent extends TikTokEvent +{ + @Nullable + private User user; + private final String emoteId; + private final Picture picture; + + public TikTokEmoteEvent(WebcastEmoteChatMessage msg) { + super(msg.getHeader()); + if (msg.hasSender()) { + user = new User(msg.getSender()); + } + emoteId = msg.getDetails().getId(); + picture = new Picture(msg.getDetails().getImage().getUrl()); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEnvelopeEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEnvelopeEvent.java new file mode 100644 index 0000000..3b0ae05 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokEnvelopeEvent.java @@ -0,0 +1,16 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.WebcastEnvelopeMessage; +import lombok.Getter; + +@Getter +public class TikTokEnvelopeEvent extends TikTokEvent { + private final User user; + + public TikTokEnvelopeEvent(WebcastEnvelopeMessage msg) { + super(msg.getHeader()); + user = new User(msg.getUser().getId(), msg.getUser().getUsername()); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokFollowEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokFollowEvent.java new file mode 100644 index 0000000..f8e8236 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokFollowEvent.java @@ -0,0 +1,25 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.annotations.Nullable; +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.WebcastSocialMessage; +import lombok.Getter; + +@Getter +public class TikTokFollowEvent extends TikTokEvent +{ + @Nullable + private User newFollower; + private final Long totalFollowers; + + public TikTokFollowEvent(WebcastSocialMessage msg) { + super(msg.getHeader()); + if(msg.hasSender()) + { + newFollower = new User(msg.getSender()); + } + totalFollowers = msg.getTotalFollowers(); + + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftBroadcastEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftBroadcastEvent.java new file mode 100644 index 0000000..976e29c --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftBroadcastEvent.java @@ -0,0 +1,31 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.Picture; +import io.github.jwdeveloper.tiktok.messages.WebcastGiftBroadcastMessage; +import lombok.Getter; + +@Getter +public class TikTokGiftBroadcastEvent extends TikTokEvent +{ + private final Picture picture; + + private final String shortURL; + + private final String notifyEventType; + + private final String notifyLabel; + + private final String notifyType; + + public TikTokGiftBroadcastEvent(WebcastGiftBroadcastMessage msg) + { + super(msg.getHeader()); + picture = new Picture(msg.getPicture()); + var data = msg.getData(); + shortURL = data.getUri(); + notifyEventType = data.getRoomNotifyMessage().getData().getType(); + notifyLabel = data.getRoomNotifyMessage().getData().getLabel(); + notifyType = data.getNotifyType(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftMessageEvent.java new file mode 100644 index 0000000..5beec96 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftMessageEvent.java @@ -0,0 +1,40 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.annotations.Nullable; +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.Gift; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.WebcastGiftMessage; +import lombok.Getter; + +@Getter +public class TikTokGiftMessageEvent extends TikTokEvent { + private final Gift gift; + + @Nullable + private User sender; + + private final String purchaseId; + + private final String receipt; + + private final Integer amount; + + private final Boolean streakFinished; + + private final Integer streakIndex; + + public TikTokGiftMessageEvent(WebcastGiftMessage msg) { + super(msg.getHeader());; + gift = new Gift(msg.getGiftDetails()); + if(msg.hasSender()) + { + sender = new User(msg.getSender()); + } + purchaseId = msg.getLogId(); + receipt = msg.getReceiptJson(); + amount = msg.getAmount(); + streakFinished = msg.getRepeatEnd(); + streakIndex = msg.getRepeatCount(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGoalUpdateEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGoalUpdateEvent.java new file mode 100644 index 0000000..c886b0a --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGoalUpdateEvent.java @@ -0,0 +1,29 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.Picture; + +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.WebcastGoalUpdateMessage; +import lombok.Getter; + +import java.util.List; + +@Getter +public class TikTokGoalUpdateEvent extends TikTokEvent +{ + private final Long goalId; + private final Picture picture; + private final String eventType; + private final String label; + private final List users; + + public TikTokGoalUpdateEvent(WebcastGoalUpdateMessage msg) { + super(msg.getHeader()); + picture = new Picture(msg.getPicture()); + goalId = msg.getId(); + eventType = msg.getData().getType(); + label = msg.getUpdateData().getLabel(); + users = msg.getUpdateData().getUsersList().stream().map(u ->new User(u.getId(),u.getNickname(),new Picture(u.getProfilePicture()))).toList(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokIMDeleteEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokIMDeleteEvent.java new file mode 100644 index 0000000..ad1959f --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokIMDeleteEvent.java @@ -0,0 +1,17 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.messages.WebcastImDeleteMessage; +import lombok.Getter; + +@Getter +public class TikTokIMDeleteEvent extends TikTokEvent { + private final String data1; + private final String data2; + + public TikTokIMDeleteEvent(WebcastImDeleteMessage msg) { + super(msg.getHeader());; + data1 = msg.getData1(); + data2 = msg.getData2(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokInRoomBannerEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokInRoomBannerEvent.java new file mode 100644 index 0000000..b088ae7 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokInRoomBannerEvent.java @@ -0,0 +1,15 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.messages.WebcastInRoomBannerMessage; +import lombok.Getter; + +@Getter +public class TikTokInRoomBannerEvent extends TikTokEvent { + private String jSON; + + public TikTokInRoomBannerEvent(WebcastInRoomBannerMessage msg) { + super(msg.getHeader());; + jSON = msg.getJson(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokJoinEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokJoinEvent.java new file mode 100644 index 0000000..5980ba4 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokJoinEvent.java @@ -0,0 +1,34 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.annotations.Nullable; +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.WebcastMemberMessage; +import io.github.jwdeveloper.tiktok.messages.WebcastSocialMessage; +import lombok.Getter; + +@Getter +public class TikTokJoinEvent extends TikTokEvent { + @Nullable + private User user; + + private final Long totalViewers; + + public TikTokJoinEvent(WebcastSocialMessage msg) { + super(msg.getHeader()); + + if (msg.hasSender()) { + user = new User(msg.getSender()); + } + + totalViewers = 0L; + } + + public TikTokJoinEvent(WebcastMemberMessage msg) { + super(msg.getHeader()); + if (msg.hasUser()) { + user = new User(msg.getUser()); + } + totalViewers = msg.getTotalViewers(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLikeEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLikeEvent.java new file mode 100644 index 0000000..18d473e --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLikeEvent.java @@ -0,0 +1,39 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.annotations.Nullable; +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.WebcastLikeMessage; +import io.github.jwdeveloper.tiktok.messages.WebcastSocialMessage; +import lombok.Getter; + +@Getter +public class TikTokLikeEvent extends TikTokEvent +{ + @Nullable + private User sender; + + private final Integer count; + + private final Long totalLikes; + + public TikTokLikeEvent(WebcastSocialMessage msg) { + super(msg.getHeader()); + if (msg.hasSender()) { + sender = new User(msg.getSender()); + } + count = 1; + totalLikes = 0L; + } + + public TikTokLikeEvent(WebcastLikeMessage msg) { + super(msg.getHeader()); + + if (msg.hasSender()) { + sender = new User(msg.getSender()); + } + + count = msg.getCount(); + totalLikes = msg.getTotalLikes(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkLayerMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkLayerMessageEvent.java new file mode 100644 index 0000000..029e502 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkLayerMessageEvent.java @@ -0,0 +1,27 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.messages.WebcastLinkLayerMessage; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +public class TikTokLinkLayerMessageEvent extends TikTokEvent { + private final Long linkId; + private final LinkData link1; + private final LinkData link2; + + public TikTokLinkLayerMessageEvent(WebcastLinkLayerMessage msg) { + super(msg.getHeader()); + linkId = msg.getId(); + link1 = new LinkData(msg.getIdContainer1().getIds().getId1(), msg.getIdContainer1().getIds().getId2()); + link2 = new LinkData(msg.getIdContainer2().getIds().getId1(), msg.getIdContainer2().getIds().getId2()); + } + + @AllArgsConstructor + @Getter + private class LinkData { + private final Long id1; + private final Long id2; + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMessageEvent.java new file mode 100644 index 0000000..8763aaf --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMessageEvent.java @@ -0,0 +1,28 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.annotations.Nullable; +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.WebcastLinkMessage; +import lombok.Getter; + +import java.util.List; + +@Getter +public class TikTokLinkMessageEvent extends TikTokEvent { + private final String token; + + @Nullable + private User user; + + private final List otherUsers; + + public TikTokLinkMessageEvent(WebcastLinkMessage msg) { + super(msg.getHeader()); + token = msg.getToken(); + if (msg.getUser().getUser().hasUser()) { + user = new User(msg.getUser().getUser().getUser()); + } + otherUsers = msg.getUser().getOtherUsersList().stream().map(e -> new User(e.getUser())).toList(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicArmiesEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicArmiesEvent.java new file mode 100644 index 0000000..bc789c4 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicArmiesEvent.java @@ -0,0 +1,28 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.LinkMicArmy; +import io.github.jwdeveloper.tiktok.events.objects.Picture; +import io.github.jwdeveloper.tiktok.messages.WebcastLinkMicArmies; +import lombok.Getter; + +import java.util.List; + +@Getter +public class TikTokLinkMicArmiesEvent extends TikTokEvent { + private final Long battleId; + + private final Integer battleStatus; + + private final Picture picture; + + private final List armies; + + public TikTokLinkMicArmiesEvent(WebcastLinkMicArmies msg) { + super(msg.getHeader()); + battleId = msg.getId(); + armies = msg.getBattleItemsList().stream().map(LinkMicArmy::new).toList(); + picture = new Picture(msg.getPicture()); + battleStatus = msg.getBattleStatus(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicBattleEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicBattleEvent.java new file mode 100644 index 0000000..0890c4c --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicBattleEvent.java @@ -0,0 +1,22 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.LinkMicBattleTeam; +import io.github.jwdeveloper.tiktok.messages.WebcastLinkMicBattle; +import lombok.Getter; + +import java.util.List; + +@Getter +public class TikTokLinkMicBattleEvent extends TikTokEvent { + private final Long battleId; + private final List team1; + private final List team2; + + public TikTokLinkMicBattleEvent(WebcastLinkMicBattle msg) { + super(msg.getHeader()); + battleId = msg.getId(); + team1 = msg.getTeams1List().stream().map(LinkMicBattleTeam::new).toList(); + team2 = msg.getTeams2List().stream().map(LinkMicBattleTeam::new).toList(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicFanTicketEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicFanTicketEvent.java new file mode 100644 index 0000000..33a0002 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicFanTicketEvent.java @@ -0,0 +1,19 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.messages.WebcastLinkMicFanTicketMethod; +import lombok.Getter; + +@Getter +public class TikTokLinkMicFanTicketEvent extends TikTokEvent { + private final Long id; + private final Integer data1; + private final Integer data2; + + public TikTokLinkMicFanTicketEvent(WebcastLinkMicFanTicketMethod msg) { + super(msg.getHeader()); + id = msg.getData().getDetails().getId(); + data1 = msg.getData().getData1(); + data2 = msg.getData().getDetails().getData(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicMethodEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicMethodEvent.java new file mode 100644 index 0000000..83dc22d --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicMethodEvent.java @@ -0,0 +1,21 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.messages.LinkMicMethod; +import io.github.jwdeveloper.tiktok.messages.WebcastLinkMicMethod; +import lombok.Getter; + +@Getter +public class TikTokLinkMicMethodEvent extends TikTokEvent { + private final String jSON; + + public TikTokLinkMicMethodEvent(WebcastLinkMicMethod msg) { + super(msg.getHeader());; + jSON = ""; + } + + public TikTokLinkMicMethodEvent(LinkMicMethod msg) { + super(msg.getHeader());; + jSON = msg.getJson(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLiveEndedEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLiveEndedEvent.java new file mode 100644 index 0000000..4471fc7 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLiveEndedEvent.java @@ -0,0 +1,6 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; + +public class TikTokLiveEndedEvent extends TikTokEvent { +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLivePausedEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLivePausedEvent.java new file mode 100644 index 0000000..3241cce --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLivePausedEvent.java @@ -0,0 +1,6 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; + +public class TikTokLivePausedEvent extends TikTokEvent { +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokPollMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokPollMessageEvent.java new file mode 100644 index 0000000..a8ce5ca --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokPollMessageEvent.java @@ -0,0 +1,28 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.PollOption; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.WebcastPollMessage; +import lombok.Getter; + +import java.util.List; + +@Getter +public class TikTokPollMessageEvent extends TikTokEvent { + private final Long id; + + private final PollOption option1; + + private final PollOption option2; + + private final List options; + + public TikTokPollMessageEvent(WebcastPollMessage msg) { + super(msg.getHeader()); + id = msg.getId(); + options = msg.getPollData().getOptionsList().stream().map(e -> new PollOption.Option(e.getLabel(), e.getCurrentTotal())).toList(); + option1 = new PollOption(new User(msg.getOptions1().getUser()), msg.getOptions1().getOptionsList().stream().map(e -> new PollOption.Option(e.getLabel(), e.getCurrentTotal())).toList()); + option2 = new PollOption(new User(msg.getOptions2().getUser()), msg.getOptions2().getOptionsList().stream().map(e -> new PollOption.Option(e.getLabel(), e.getCurrentTotal())).toList()); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokQuestionEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokQuestionEvent.java new file mode 100644 index 0000000..6d97696 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokQuestionEvent.java @@ -0,0 +1,29 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.WebcastQuestionNewMessage; +import lombok.Getter; + +@Getter +public class TikTokQuestionEvent extends TikTokEvent { + private final Long questionId; + + private final String text; + + private final Long time; + + private User user; + + + public TikTokQuestionEvent(WebcastQuestionNewMessage msg) { + super(msg.getHeader()); + var data = msg.getDetails(); + questionId = data.getId(); + text = data.getText(); + time = data.getTimeStamp(); + if (data.hasUser()) { + user = new User(data.getUser()); + } + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankTextEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankTextEvent.java new file mode 100644 index 0000000..957a916 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankTextEvent.java @@ -0,0 +1,20 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.messages.WebcastRankTextMessage; +import lombok.Getter; + +@Getter +public class TikTokRankTextEvent extends TikTokEvent { + private String eventType; + + private String label; + + + public TikTokRankTextEvent(WebcastRankTextMessage msg) { + super(0,0,0);//TODO passing info + eventType = msg.getDetails().getType(); + label =msg.getDetails().getLabel(); + } + +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankUpdateEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankUpdateEvent.java new file mode 100644 index 0000000..752e25c --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankUpdateEvent.java @@ -0,0 +1,38 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.messages.WebcastHourlyRankMessage; +import io.github.jwdeveloper.tiktok.messages.WebcastRankUpdateMessage; +import lombok.Getter; + +@Getter +public class TikTokRankUpdateEvent extends TikTokEvent { + private final String eventType; + + private final String label; + + private final String rank; + + private final String color; + + public TikTokRankUpdateEvent(WebcastHourlyRankMessage msg) { + super(msg.getHeader()); + var rankData = msg.getData().getRankings(); + eventType = rankData.getType(); + label = rankData.getLabel(); + rank = rankData.getDetails(0).getLabel(); + color = rankData.getColor().getColor(); + + + } + + public TikTokRankUpdateEvent(WebcastRankUpdateMessage msg) { + super(msg.getHeader()); + var rankData = msg.getData().getRankData(); + eventType = rankData.getType(); + label = rankData.getLabel(); + rank = rankData.getDetails(0).getLabel(); + color = rankData.getColor().getColor(); + } + +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomMessageEvent.java new file mode 100644 index 0000000..af978a0 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomMessageEvent.java @@ -0,0 +1,44 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.annotations.Nullable; +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.RoomMessage; +import io.github.jwdeveloper.tiktok.messages.SystemMessage; +import io.github.jwdeveloper.tiktok.messages.WebcastLiveIntroMessage; +import io.github.jwdeveloper.tiktok.messages.WebcastRoomMessage; +import lombok.Getter; + +@Getter +public class TikTokRoomMessageEvent extends TikTokEvent { + @Nullable + private User host; + @Nullable + private String hostLanguage; + private final String message; + + public TikTokRoomMessageEvent(WebcastRoomMessage msg) { + super(msg.getHeader()); + message = msg.getData(); + } + + public TikTokRoomMessageEvent(SystemMessage msg) { + super(msg.getHeader()); + message = msg.getMessage(); + } + + public TikTokRoomMessageEvent(RoomMessage msg) { + super(msg.getHeader()); + message = msg.getMessage(); + } + + public TikTokRoomMessageEvent(WebcastLiveIntroMessage msg) { + super(msg.getHeader()); + if (msg.hasHost()) { + host = new User(msg.getHost()); + } + message = msg.getDescription(); + hostLanguage = msg.getLanguage(); + } + +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomPinMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomPinMessageEvent.java new file mode 100644 index 0000000..f7ee735 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomPinMessageEvent.java @@ -0,0 +1,18 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.messages.WebcastRoomPinMessage; +import lombok.Getter; + +@Getter +public class TikTokRoomPinMessageEvent extends TikTokEvent { + private final Long pinTimeStamp; + private final TikTokCommentEvent comment; + + public TikTokRoomPinMessageEvent(WebcastRoomPinMessage msg) { + super(msg.getHeader()); + this.pinTimeStamp = msg.getTimestamp(); + this.comment = new TikTokCommentEvent(msg.getPinData1()); + } + +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomViewerDataEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomViewerDataEvent.java new file mode 100644 index 0000000..a15d54c --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomViewerDataEvent.java @@ -0,0 +1,23 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.TopViewer; +import io.github.jwdeveloper.tiktok.messages.WebcastRoomUserSeqMessage; +import lombok.Getter; + +import java.util.List; + +@Getter +public class TikTokRoomViewerDataEvent extends TikTokEvent { + private final Integer viewerCount; + private final List topViewers; + + public TikTokRoomViewerDataEvent(WebcastRoomUserSeqMessage msg) { + super(msg.getHeader()); + + //TODO sorting by rank TopViewers = msg?.TopViewers?.Select(t => new Objects.TopViewer(t))?.OrderBy(t => t.Rank)? + viewerCount = msg.getViewerCount(); + topViewers = msg.getTopViewersList().stream().map(TopViewer::new).toList(); + } + +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShareEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShareEvent.java new file mode 100644 index 0000000..2fe5080 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShareEvent.java @@ -0,0 +1,32 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.WebcastSocialMessage; +import lombok.Getter; + +@Getter +public class TikTokShareEvent extends TikTokEvent { + private User user; + + private Integer amount; + + public TikTokShareEvent(WebcastSocialMessage msg, Integer amount) { + super(msg.getHeader());; + if(msg.hasSender()) + { + user = new User(msg.getSender()); + } + this.amount = amount; + } + + public TikTokShareEvent(WebcastSocialMessage msg) { + super(msg.getHeader()); + if(msg.hasSender()) + { + user = new User(msg.getSender()); + } + amount = 1; + } + +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShopMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShopMessageEvent.java new file mode 100644 index 0000000..62e383b --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShopMessageEvent.java @@ -0,0 +1,30 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.Picture; +import io.github.jwdeveloper.tiktok.messages.WebcastOecLiveShoppingMessage; +import lombok.Getter; + +@Getter +public class TikTokShopMessageEvent extends TikTokEvent { + private final String title; + + private final String price; + + private final Picture picture; + + private final String shopUrl; + + private final String shopName; + + public TikTokShopMessageEvent(WebcastOecLiveShoppingMessage msg) { + super(msg.getHeader()); + var data = msg.getShopData(); + title = data.getTitle(); + price = data.getPriceString(); + picture = new Picture(data.getImageUrl()); + shopUrl = data.getShopUrl(); + shopName = data.getShopName(); + } + +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubNotifyEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubNotifyEvent.java new file mode 100644 index 0000000..298ce1a --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubNotifyEvent.java @@ -0,0 +1,21 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.WebcastSubNotifyMessage; +import lombok.Getter; + +@Getter +public class TikTokSubNotifyEvent extends TikTokEvent { + private User user; + + public TikTokSubNotifyEvent(WebcastSubNotifyMessage msg) { + super(msg.getHeader()); + + if (msg.hasSender()) { + user = new User(msg.getSender()); + } + + } + +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubscribeEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubscribeEvent.java new file mode 100644 index 0000000..7a3f792 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokSubscribeEvent.java @@ -0,0 +1,21 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.WebcastMemberMessage; +import lombok.Getter; + +@Getter +public class TikTokSubscribeEvent extends TikTokEvent { + private User newSubscriber; + + public TikTokSubscribeEvent(WebcastMemberMessage msg) { + super(msg.getHeader()); + + if(msg.hasUser()) + { + newSubscriber = new User(msg.getUser()); + } + } + +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnauthorizedMemberEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnauthorizedMemberEvent.java new file mode 100644 index 0000000..8ca9075 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnauthorizedMemberEvent.java @@ -0,0 +1,33 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.messages.WebcastUnauthorizedMemberMessage; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +public class TikTokUnauthorizedMemberEvent extends TikTokEvent { + private final String data; + + private final UnauthorizedMemberData event; + + private final UnauthorizedMemberData underlying; + + public TikTokUnauthorizedMemberEvent(WebcastUnauthorizedMemberMessage msg) { + super(msg.getHeader()); + + data = msg.getData2(); + event = new UnauthorizedMemberData(msg.getDetails1().getType(), msg.getDetails1().getLabel()); + underlying = new UnauthorizedMemberData(msg.getDetails2().getType(), msg.getDetails2().getLabel()); + } + + + @Getter + @AllArgsConstructor + public class UnauthorizedMemberData { + private final String data1; + + private final String data2; + } + +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledControlEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledControlEvent.java new file mode 100644 index 0000000..3704279 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledControlEvent.java @@ -0,0 +1,13 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.messages.WebcastControlMessage; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class TikTokUnhandledControlEvent extends TikTokEvent { + + private final WebcastControlMessage message; +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledEvent.java new file mode 100644 index 0000000..9045111 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledEvent.java @@ -0,0 +1,14 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.messages.WebcastResponse; +import lombok.AllArgsConstructor; +import lombok.Getter; + + +@Getter +@AllArgsConstructor +public class TikTokUnhandledEvent extends TikTokEvent +{ + private final WebcastResponse.Message message; +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledMemberEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledMemberEvent.java new file mode 100644 index 0000000..5478d15 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledMemberEvent.java @@ -0,0 +1,13 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.messages.WebcastMemberMessage; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class TikTokUnhandledMemberEvent extends TikTokEvent +{ + private final WebcastMemberMessage message; +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledSocialEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledSocialEvent.java new file mode 100644 index 0000000..c92b5fb --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledSocialEvent.java @@ -0,0 +1,13 @@ +package io.github.jwdeveloper.tiktok.events.messages; + +import io.github.jwdeveloper.tiktok.events.TikTokEvent; +import io.github.jwdeveloper.tiktok.messages.WebcastSocialMessage; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public class TikTokUnhandledSocialEvent extends TikTokEvent +{ + private final WebcastSocialMessage message; +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Badge.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Badge.java new file mode 100644 index 0000000..3cbd35d --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Badge.java @@ -0,0 +1,41 @@ +package io.github.jwdeveloper.tiktok.events.objects; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.List; + +@Getter +public class Badge { + private final ComboBadge comboBadges; + private final List textBadges; + private final List imageBadges; + + public Badge(io.github.jwdeveloper.tiktok.messages.Badge badge) { + textBadges = badge.getTextBadgesList().stream().map(b -> new TextBadge(b.getType(), b.getName())).toList(); + imageBadges = badge.getImageBadgesList().stream().map(b -> new ImageBadge(b.getDisplayType(), new Picture(b.getImage()))).toList(); + comboBadges = new ComboBadge(new Picture(badge.getComplexBadge().getImageUrl()), badge.getComplexBadge().getData()); + } + + + @AllArgsConstructor + @Getter + public class TextBadge { + private final String type; + private final String name; + } + + @AllArgsConstructor + @Getter + public class ImageBadge { + private final Integer displayType; + private final Picture image; + } + + @AllArgsConstructor + @Getter + public class ComboBadge { + private final Picture image; + private final String data; + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/BarrageData.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/BarrageData.java new file mode 100644 index 0000000..a32ac3a --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/BarrageData.java @@ -0,0 +1,29 @@ +package io.github.jwdeveloper.tiktok.events.objects; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.List; + +@Getter +public class BarrageData { + private final String eventType; + private final String label; + private final List users; + + public BarrageData(String eventType, String label, List users) + { + this.eventType = eventType; + this.label = label; + this.users = users; + } + + @Getter + @AllArgsConstructor + public static final class BarrageUser + { + private final User user; + + private final String data; + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Gift.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Gift.java new file mode 100644 index 0000000..f1f0bad --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Gift.java @@ -0,0 +1,27 @@ +package io.github.jwdeveloper.tiktok.events.objects; + +import lombok.Getter; + +@Getter +public class Gift { + private final Long id; + + private final String name; + + private final String description; + + private final Integer diamondCost; + + private final Integer type; + + private final Picture picture; + + public Gift(io.github.jwdeveloper.tiktok.messages.Gift gift) { + id = gift.getId(); + name = gift.getName(); + description = gift.getDescription(); + diamondCost = gift.getCoinCount(); + type = gift.getGiftType(); + picture = new Picture(gift.getImage()); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/LinkMicArmy.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/LinkMicArmy.java new file mode 100644 index 0000000..c402e06 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/LinkMicArmy.java @@ -0,0 +1,31 @@ +package io.github.jwdeveloper.tiktok.events.objects; + +import io.github.jwdeveloper.tiktok.messages.LinkMicArmiesItems; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.List; + +@Getter +public class LinkMicArmy { + private final Long armyId; + private final List armies; + + public LinkMicArmy(LinkMicArmiesItems army) { + armyId = army.getHostUserId(); + armies = army.getBattleGroupsList() + .stream() + .map(x -> new Army(x.getUsersList() + .stream() + .map(User::new).toList(), x.getPoints())) + .toList(); + } + + + @Getter + @AllArgsConstructor + public final class Army { + private final List Users; + private final Integer Points; + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/LinkMicBattleTeam.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/LinkMicBattleTeam.java new file mode 100644 index 0000000..f46975a --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/LinkMicBattleTeam.java @@ -0,0 +1,18 @@ +package io.github.jwdeveloper.tiktok.events.objects; + + +import io.github.jwdeveloper.tiktok.messages.WebcastLinkMicBattle; +import lombok.Getter; + +import java.util.List; + +@Getter +public class LinkMicBattleTeam { + private final Long teamId; + private final List users; + + public LinkMicBattleTeam(WebcastLinkMicBattle.LinkMicBattleTeam team) { + this.teamId = team.getId(); + this.users = team.getUsersList().stream().map(User::new).toList(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Picture.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Picture.java new file mode 100644 index 0000000..1048a6b --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Picture.java @@ -0,0 +1,25 @@ +package io.github.jwdeveloper.tiktok.events.objects; + +import lombok.Getter; + +import java.util.Arrays; +import java.util.List; + +@Getter +public class Picture { + + public final List urls; + + public Picture(io.github.jwdeveloper.tiktok.messages.Picture profilePicture) { + this.urls = profilePicture.getUrlsList(); + } + + public Picture(List urls) { + this.urls = urls; + } + + public Picture(String ... urls) + { + this.urls = Arrays.stream(urls).toList(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/PollOption.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/PollOption.java new file mode 100644 index 0000000..d5b30a7 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/PollOption.java @@ -0,0 +1,22 @@ +package io.github.jwdeveloper.tiktok.events.objects; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.List; + +@Getter +@AllArgsConstructor +public class PollOption { + + private final User user; + private final List