diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/ClientSettings.java b/API/src/main/java/io/github/jwdeveloper/tiktok/ClientSettings.java index dc8df49..5c6c2ed 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/ClientSettings.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/ClientSettings.java @@ -69,13 +69,13 @@ public class ClientSettings { /** - * Optional: Use it if you need to change tiktok live hostname in builder + * Optional: Use it if you need to change TikTok live hostname in builder */ private String hostName; /** - * Parameters used in requests to Tiktok api + * Parameters used in requests to TikTok api */ private Map clientParameters; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/Constants.java b/API/src/main/java/io/github/jwdeveloper/tiktok/Constants.java index 0ab0efa..a2dcf50 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/Constants.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/Constants.java @@ -48,16 +48,11 @@ public class Constants { * Default TimeOut for Connections */ public static final int DEFAULT_TIMEOUT = 20; - /** - * Default Polling-Time for Socket-Connection - */ - public static final int DEFAULT_POLLTIME = 1; + /** * Default Settings for Client */ - - public static ClientSettings DefaultClientSettings() { var clientSettings = new ClientSettings(); clientSettings.setTimeout(Duration.ofSeconds(DEFAULT_TIMEOUT)); @@ -75,8 +70,6 @@ public class Constants { /** * Default Parameters for HTTP-Request */ - - public static Map DefaultClientParams() { var clientParams = new TreeMap(); clientParams.put("aid", 1988); 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 index 89b6bb1..52ad99e 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEventBuilder.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEventBuilder.java @@ -23,6 +23,14 @@ package io.github.jwdeveloper.tiktok.events; import io.github.jwdeveloper.tiktok.events.messages.*; +import io.github.jwdeveloper.tiktok.events.messages.TikTokConnectedEvent; +import io.github.jwdeveloper.tiktok.events.messages.TikTokDisconnectedEvent; +import io.github.jwdeveloper.tiktok.events.messages.TikTokGiftComboFinishedEvent; +import io.github.jwdeveloper.tiktok.events.messages.TikTokGiftEvent; +import io.github.jwdeveloper.tiktok.events.messages.TikTokJoinEvent; +import io.github.jwdeveloper.tiktok.events.messages.TikTokLikeEvent; +import io.github.jwdeveloper.tiktok.events.messages.TikTokBarrageEvent; +import io.github.jwdeveloper.tiktok.events.messages.poll.TikTokPollEvent; public interface TikTokEventBuilder { diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/base/TikTokHeaderEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/base/TikTokHeaderEvent.java index 15c6d07..261ee2d 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/base/TikTokHeaderEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/base/TikTokHeaderEvent.java @@ -23,7 +23,7 @@ package io.github.jwdeveloper.tiktok.events.base; import io.github.jwdeveloper.tiktok.events.TikTokEvent; -import io.github.jwdeveloper.tiktok.messages.*; +import io.github.jwdeveloper.tiktok.messages.data.Common; import lombok.Getter; @Getter @@ -36,26 +36,6 @@ public class TikTokHeaderEvent extends TikTokEvent { this(header.getMsgId(), header.getRoomId(), header.getCreateTime()); } - public TikTokHeaderEvent(MessageHeader header) { - this(header.getMessageId(), header.getRoomId(), header.getTimeStamp1()); - } - - public TikTokHeaderEvent(GiftMessageHeader header) { - this(header.getMessageId(), header.getRoomId(), header.getTimeStamp1()); - } - - public TikTokHeaderEvent(MemberMessageHeader header) { - this(header.getMessageId(), header.getRoomId(), header.getTimeStamp1()); - } - - public TikTokHeaderEvent(SocialMessageHeader header) { - this(header.getMessageId(), header.getRoomId(), header.getTimeStamp1()); - } - - public TikTokHeaderEvent(LikeMessageHeader header) { - this(header.getMessageId(), header.getRoomId(), header.getTimeStamp1()); - } - public TikTokHeaderEvent(long messageId, long roomId, long timeStamp) { this.messageId = messageId; this.roomId = roomId; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokBarrageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokBarrageEvent.java index b0f798b..44c0374 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokBarrageEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokBarrageEvent.java @@ -25,33 +25,40 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -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.Value; +import io.github.jwdeveloper.tiktok.events.objects.barrage.BarrageParam; +import io.github.jwdeveloper.tiktok.events.objects.barrage.FansLevelParam; +import io.github.jwdeveloper.tiktok.events.objects.barrage.SubscribeGiftParam; +import io.github.jwdeveloper.tiktok.events.objects.barrage.UserGradeParam; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastBarrageMessage; +import lombok.Getter; -@Value +@Getter @EventMeta(eventType = EventType.Message) public class TikTokBarrageEvent extends TikTokHeaderEvent { - Picture picture; - Picture picture2; - Picture picture3; - User user; - BarrageData barrageData; + private final Picture icon; + private final Picture backGround; + private final Picture rightIcon; + private final String eventName; + private final int duration; + private BarrageParam barrageParam; + public TikTokBarrageEvent(WebcastBarrageMessage msg) { - super(msg.getHeader()); - picture = Picture.Map(msg.getImage()); - picture2 = Picture.Map(msg.getImage2()); - picture3 = Picture.Map(msg.getImage3()); - 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() - ); + super(msg.getCommon()); + icon = Picture.Map(msg.getIcon()); + eventName = msg.getEvent().getEventName(); + backGround = Picture.Map(msg.getBackground()); + rightIcon = Picture.Map(msg.getRightIcon()); + duration = msg.getDuration(); + switch (msg.getMsgType()) { + case GRADEUSERENTRANCENOTIFICATION: + barrageParam = new UserGradeParam(msg.getUserGradeParam()); + case FANSLEVELUPGRADE: + barrageParam = new FansLevelParam(msg.getFansLevelParam()); + case SUBSCRIBEGIFT: + barrageParam = new SubscribeGiftParam(msg.getSubscribeGiftParam()); + default: + barrageParam = new BarrageParam(); + } } } 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 index 2aae926..fda5166 100644 --- 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 @@ -25,7 +25,7 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.messages.WebcastCaptionMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastCaptionMessage; import lombok.Value; @Value 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 index d981b51..e8b55aa 100644 --- 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 @@ -27,40 +27,29 @@ import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; 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.Value; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastChatMessage; +import lombok.Getter; -import java.util.ArrayList; import java.util.List; /** * Triggered every time a new chat comment arrives. */ -@Value +@Getter @EventMeta(eventType = EventType.Message) public class TikTokCommentEvent extends TikTokHeaderEvent { - User user; - String text; - String language; - List mentionedUsers; - List pictures; - - public TikTokCommentEvent(WebcastRoomPinMessage.RoomPinMessageData data) { - super(data.getDetails().getRoomId(), data.getDetails().getMessageId(), data.getDetails().getServerTime()); - user = User.MapOrEmpty(data.getSender()); - text = data.getComment(); - language = data.getLanguage(); - mentionedUsers = new ArrayList<>(); - pictures = new ArrayList<>(); - } + private final User user; + private final String text; + private final String language; + private final List mentionedUsers; + private final List pictures; public TikTokCommentEvent(WebcastChatMessage msg) { super(msg.getCommon()); - user = User.MapOrEmpty(msg.getUser()); + user = User.mapOrEmpty(msg.getUser()); text = msg.getContent(); language = msg.getContentLanguage(); - mentionedUsers = List.of(User.MapOrEmpty(msg.getAtUser())); - pictures = msg.getEmotesListList().stream().map(e ->Picture.Map(e.getEmote().getImage())).toList(); + mentionedUsers = List.of(User.mapOrEmpty(msg.getAtUser())); + pictures = msg.getEmotesListList().stream().map(e -> Picture.Map(e.getEmote().getImage())).toList(); } } diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDetectEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDetectEvent.java index fd9f41a..d6a7e1b 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDetectEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokDetectEvent.java @@ -25,24 +25,19 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.messages.WebcastMsgDetectMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastMsgDetectMessage; import lombok.Getter; - -import java.util.List; - @Getter @EventMeta(eventType = EventType.Message) public class TikTokDetectEvent extends TikTokHeaderEvent { String language; - List data; - - List timings; public TikTokDetectEvent(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()); + super(msg.getCommon()); + language = msg.getFromRegion(); } + + + } 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 index afb923b..faa8383 100644 --- 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 @@ -25,11 +25,13 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.events.objects.Picture; +import io.github.jwdeveloper.tiktok.events.objects.Emote; import io.github.jwdeveloper.tiktok.events.objects.User; -import io.github.jwdeveloper.tiktok.messages.WebcastEmoteChatMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastEmoteChatMessage; import lombok.Value; +import java.util.List; + /** * Triggered every time a subscriber sends an emote (sticker). */ @@ -37,13 +39,11 @@ import lombok.Value; @EventMeta(eventType = EventType.Message) public class TikTokEmoteEvent extends TikTokHeaderEvent { User user; - String emoteId; - Picture picture; + List emotes; public TikTokEmoteEvent(WebcastEmoteChatMessage msg) { - super(msg.getHeader()); - user = User.MapOrEmpty(msg.getSender()); - emoteId = msg.getDetails().getId(); - picture = new Picture(msg.getDetails().getImage().getUrl()); + super(msg.getCommon()); + user = User.mapOrEmpty(msg.getUser()); + emotes = msg.getEmoteListList().stream().map(Emote::map).toList(); } } 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 index 9ae7082..23cbee8 100644 --- 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 @@ -24,11 +24,9 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.User; -import io.github.jwdeveloper.tiktok.messages.WebcastEnvelopeMessage; -import lombok.Getter; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastEnvelopeMessage; import lombok.Value; @@ -40,7 +38,7 @@ import lombok.Value; public class TikTokEnvelopeEvent extends TikTokHeaderEvent { User user; public TikTokEnvelopeEvent(WebcastEnvelopeMessage msg) { - super(msg.getHeader()); - user = new User(msg.getUser().getId(), msg.getUser().getUsername()); + super(msg.getCommon()); + user = User.map(msg.getEnvelopeInfo()); } } 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 index 6689175..b2079cd 100644 --- 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 @@ -26,7 +26,7 @@ import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.User; -import io.github.jwdeveloper.tiktok.messages.WebcastSocialMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastSocialMessage; import lombok.Value; /** @@ -36,12 +36,12 @@ import lombok.Value; @EventMeta(eventType = EventType.Custom) public class TikTokFollowEvent extends TikTokHeaderEvent { - User newFollower; + User user; Long totalFollowers; public TikTokFollowEvent(WebcastSocialMessage msg) { - super(msg.getHeader()); - newFollower = User.MapOrEmpty(msg.getSender()); - totalFollowers = msg.getTotalFollowers(); + super(msg.getCommon()); + user = User.mapOrEmpty(msg.getUser()); + totalFollowers = msg.getFollowCount(); } } diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftComboFinishedEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftComboFinishedEvent.java index 99f7d52..c074636 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftComboFinishedEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftComboFinishedEvent.java @@ -25,7 +25,8 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.objects.Gift; -import io.github.jwdeveloper.tiktok.messages.WebcastGiftMessage; + +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastGiftMessage; import lombok.Getter; @EventMeta(eventType = EventType.Custom) diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftEvent.java index bcf4207..8d7f560 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftEvent.java @@ -28,7 +28,7 @@ import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.Gift; import io.github.jwdeveloper.tiktok.events.objects.User; -import io.github.jwdeveloper.tiktok.messages.WebcastGiftMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastGiftMessage; import lombok.Getter; @@ -43,14 +43,14 @@ public class TikTokGiftEvent extends TikTokHeaderEvent { private final String purchaseId; private final String receipt; private final Long comboCount; - private final Boolean comboFinished; + private final boolean comboFinished; private final Long comboIndex; public TikTokGiftEvent(Gift gift, WebcastGiftMessage msg) { super(msg.getCommon()); this.gift = gift; - sender = User.MapOrEmpty(msg.getUser()); - purchaseId = msg.getLogId(); + sender = User.mapOrEmpty(msg.getUser()); + purchaseId = msg.getOrderId(); receipt = msg.getMonitorExtra(); comboCount = msg.getComboCount(); comboFinished = msg.getRepeatEnd() > 0; 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 index 798fd91..62e441d 100644 --- 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 @@ -27,7 +27,8 @@ import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.Picture; import io.github.jwdeveloper.tiktok.events.objects.User; -import io.github.jwdeveloper.tiktok.messages.WebcastGoalUpdateMessage; + +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastGoalUpdateMessage; import lombok.Getter; import java.util.List; @@ -37,16 +38,18 @@ import java.util.List; public class TikTokGoalUpdateEvent extends TikTokHeaderEvent { private final Long goalId; private final Picture picture; - private final String eventType; - private final String label; + private final String description; private final List users; public TikTokGoalUpdateEvent(WebcastGoalUpdateMessage msg) { - super(msg.getHeader()); - picture = Picture.Map(msg.getImage()); - goalId = msg.getId(); - eventType = msg.getData().getType(); - label = msg.getUpdateData().getLabel(); - users = msg.getUpdateData().getUsersList().stream().map(u -> new User(u.getId(), u.getNickname(), Picture.Map(u.getProfileImage()))).toList(); + super(msg.getCommon()); + picture = Picture.Map(msg.getContributorAvatar()); + goalId = msg.getGoal().getId(); + description = msg.getGoal().getDescription(); + users = msg.getGoal() + .getContributorsListList() + .stream() + .map(u -> new User(u.getUserId(), u.getDisplayId(), Picture.Map(u.getAvatar()))) + .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 index b644044..15cec29 100644 --- 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 @@ -24,18 +24,15 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.messages.WebcastImDeleteMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastImDeleteMessage; import lombok.Getter; @Getter @EventMeta(eventType = EventType.Message) public class TikTokIMDeleteEvent extends TikTokHeaderEvent { - private final byte[] data; public TikTokIMDeleteEvent(WebcastImDeleteMessage msg) { super(msg.getHeader()); - data = msg.getData().toByteArray(); } } 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 index 42b1f40..2ff1a4e 100644 --- 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 @@ -24,18 +24,17 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.messages.WebcastInRoomBannerMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastInRoomBannerMessage; import lombok.Getter; @Getter @EventMeta(eventType = EventType.Message) public class TikTokInRoomBannerEvent extends TikTokHeaderEvent { - private final String jSON; + private final String json; public TikTokInRoomBannerEvent(WebcastInRoomBannerMessage msg) { - super(msg.getHeader());; - jSON = msg.getJson(); + 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 index 3512095..b16544f 100644 --- 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 @@ -26,31 +26,25 @@ import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.User; -import io.github.jwdeveloper.tiktok.messages.WebcastMemberMessage; -import io.github.jwdeveloper.tiktok.messages.WebcastSocialMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastMemberMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastSocialMessage; import lombok.Getter; @Getter @EventMeta(eventType = EventType.Custom) public class TikTokJoinEvent extends TikTokHeaderEvent { - private User user; - private final Long totalViewers; + private final User user; + private final int viewersCount; - public TikTokJoinEvent(WebcastSocialMessage msg) { - super(msg.getHeader()); - - if (msg.hasSender()) { - user = new User(msg.getSender()); - } - - totalViewers = 0L; + public TikTokJoinEvent(WebcastSocialMessage msg, int viewersCount) { + super(msg.getCommon()); + user = User.mapOrEmpty(msg.getUser()); + this.viewersCount = viewersCount; } public TikTokJoinEvent(WebcastMemberMessage msg) { - super(msg.getHeader()); - if (msg.hasUser()) { - user = new User(msg.getUser()); - } - totalViewers = msg.getTotalViewers(); + super(msg.getCommon()); + user = User.mapOrEmpty(msg.getUser()); + viewersCount = msg.getMemberCount(); } } 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 index 6cb584e..1ba0c34 100644 --- 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 @@ -26,8 +26,8 @@ import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.User; -import io.github.jwdeveloper.tiktok.messages.WebcastLikeMessage; -import io.github.jwdeveloper.tiktok.messages.WebcastSocialMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastLikeMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastSocialMessage; import lombok.Getter; @@ -38,29 +38,23 @@ import lombok.Getter; @EventMeta(eventType = EventType.Custom) public class TikTokLikeEvent extends TikTokHeaderEvent { - private User sender; + private final User user; private final Integer count; - private final Long totalLikes; + private final Integer totalLikes; - public TikTokLikeEvent(WebcastSocialMessage msg) { - super(msg.getHeader()); - if (msg.hasSender()) { - sender = new User(msg.getSender()); - } + public TikTokLikeEvent(WebcastSocialMessage msg, int totalLikes) { + super(msg.getCommon()); + user = User.mapOrEmpty(msg.getUser()); count = 1; - totalLikes = 0L; + this.totalLikes = totalLikes; } public TikTokLikeEvent(WebcastLikeMessage msg) { - super(msg.getHeader()); - - if (msg.hasSender()) { - sender = new User(msg.getSender()); - } - + super(msg.getCommon()); + user = User.mapOrEmpty(msg.getUser()); count = msg.getCount(); - totalLikes = msg.getTotalLikes(); + totalLikes = msg.getTotal(); } } diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkEvent.java index 57cc057..b7693d4 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkEvent.java @@ -26,7 +26,7 @@ import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.User; -import io.github.jwdeveloper.tiktok.messages.WebcastLinkMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastLinkMessage; import lombok.Getter; import java.util.List; @@ -41,7 +41,7 @@ public class TikTokLinkEvent extends TikTokHeaderEvent { private final List otherUsers; public TikTokLinkEvent(WebcastLinkMessage msg) { - super(msg.getHeader()); + super(msg.getCommon()); token = msg.getToken(); if (msg.getUser().getUser().hasUser()) { user = new User(msg.getUser().getUser().getUser()); diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkLayerEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkLayerEvent.java index 1048812..973ddbf 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkLayerEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkLayerEvent.java @@ -25,28 +25,20 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.messages.WebcastLinkLayerMessage; + +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastLinkLayerMessage; import lombok.AllArgsConstructor; import lombok.Getter; @Getter @EventMeta(eventType = EventType.Message) public class TikTokLinkLayerEvent extends TikTokHeaderEvent { - private final Long linkId; - private final LinkData link1; - private final LinkData link2; + public TikTokLinkLayerEvent(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()); + super(msg.getCommon()); + } - @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/TikTokLinkMicArmiesEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokLinkMicArmiesEvent.java index 8a5df3a..791d089 100644 --- 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 @@ -24,11 +24,10 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.LinkMicArmy; import io.github.jwdeveloper.tiktok.events.objects.Picture; -import io.github.jwdeveloper.tiktok.messages.WebcastLinkMicArmies; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastLinkMicArmies; import lombok.Getter; import java.util.List; @@ -49,7 +48,7 @@ public class TikTokLinkMicArmiesEvent extends TikTokHeaderEvent { private final List armies; public TikTokLinkMicArmiesEvent(WebcastLinkMicArmies msg) { - super(msg.getHeader()); + super(msg.getCommon()); battleId = msg.getId(); armies = msg.getBattleItemsList().stream().map(LinkMicArmy::new).toList(); picture = Picture.Map(msg.getImage()); 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 index 445a59f..1a810af 100644 --- 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 @@ -24,10 +24,9 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.LinkMicBattleTeam; -import io.github.jwdeveloper.tiktok.messages.WebcastLinkMicBattle; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastLinkMicBattle; import lombok.Getter; import java.util.List; @@ -43,7 +42,7 @@ public class TikTokLinkMicBattleEvent extends TikTokHeaderEvent { private final List team2; public TikTokLinkMicBattleEvent(WebcastLinkMicBattle msg) { - super(msg.getHeader()); + super(msg.getCommon()); 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 index d7e6d19..a626051 100644 --- 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 @@ -24,22 +24,16 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.messages.WebcastLinkMicFanTicketMethod; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastLinkMicFanTicketMethod; import lombok.Getter; @Getter @EventMeta(eventType = EventType.Message) public class TikTokLinkMicFanTicketEvent extends TikTokHeaderEvent { - 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(); + super(msg.getCommon()); } } 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 index 5840c85..de3bb5c 100644 --- 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 @@ -24,24 +24,18 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.messages.LinkMicMethod; -import io.github.jwdeveloper.tiktok.messages.WebcastLinkMicMethod; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastLinkMicMethod; import lombok.Getter; @Getter @EventMeta(eventType = EventType.Message) public class TikTokLinkMicMethodEvent extends TikTokHeaderEvent { - private final String jSON; public TikTokLinkMicMethodEvent(WebcastLinkMicMethod msg) { - super(msg.getHeader());; - jSON = ""; + super(msg.getCommon()); + } - public TikTokLinkMicMethodEvent(LinkMicMethod msg) { - super(msg.getHeader());; - jSON = msg.getJson(); - } + } 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 index 59fc1af..7b98b88 100644 --- 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 @@ -26,7 +26,7 @@ import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.User; -import io.github.jwdeveloper.tiktok.messages.WebcastQuestionNewMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastQuestionNewMessage; import lombok.Getter; /* @@ -45,7 +45,7 @@ public class TikTokQuestionEvent extends TikTokHeaderEvent { public TikTokQuestionEvent(WebcastQuestionNewMessage msg) { - super(msg.getHeader()); + super(msg.getCommon()); var data = msg.getDetails(); questionId = data.getId(); text = data.getText(); 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 index cc8de40..6d34f78 100644 --- 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 @@ -24,9 +24,9 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.messages.WebcastRankTextMessage; +import io.github.jwdeveloper.tiktok.events.objects.Text; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastRankTextMessage; import lombok.Getter; @Getter @@ -36,11 +36,11 @@ public class TikTokRankTextEvent extends TikTokHeaderEvent { private final String label; - public TikTokRankTextEvent(WebcastRankTextMessage msg) { - super(0,0,0);//TODO passing info - eventType = msg.getDetails().getType(); - label =msg.getDetails().getLabel(); + super(msg.getCommon()); + var text = Text.map(msg.getSelfGetBadgeMsg()); + label = text.getPattern(); + eventType = text.getKey(); } } 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 index e37f5f9..1cfd9d6 100644 --- 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 @@ -24,53 +24,22 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.messages.WebcastHourlyRankMessage; -import io.github.jwdeveloper.tiktok.messages.WebcastRankUpdateMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastHourlyRankMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastRankUpdateMessage; import lombok.Getter; @Getter @EventMeta(eventType = EventType.Message) public class TikTokRankUpdateEvent extends TikTokHeaderEvent { - 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(); - if(rankData.getDetailsList().isEmpty()) - { - rank = ""; - } - else - { - rank = rankData.getDetails(0).getLabel(); - } - color = rankData.getColor().getColor(); + super(msg.getCommon()); + } public TikTokRankUpdateEvent(WebcastRankUpdateMessage msg) { - super(msg.getHeader()); - var rankData = msg.getData().getRankData(); - eventType = rankData.getType(); - label = rankData.getLabel(); - if(rankData.getDetailsList().isEmpty()) - { - rank = ""; - } - else - { - rank = rankData.getDetails(0).getLabel(); - } - color = rankData.getColor().getColor(); + super(msg.getCommon()); } } diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomEvent.java index d1501ad..8d94c3b 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomEvent.java @@ -26,10 +26,9 @@ import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; 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 io.github.jwdeveloper.tiktok.messages.webcast.WebcastLiveIntroMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastRoomMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastSystemMessage; import lombok.Getter; @Getter @@ -40,26 +39,19 @@ public class TikTokRoomEvent extends TikTokHeaderEvent { private final String message; public TikTokRoomEvent(WebcastRoomMessage msg) { - super(msg.getHeader()); - message = msg.getData(); + super(msg.getCommon()); + message = msg.getContent(); } - public TikTokRoomEvent(SystemMessage msg) { - super(msg.getHeader()); - message = msg.getMessage(); - } - - public TikTokRoomEvent(RoomMessage msg) { - super(msg.getHeader()); + public TikTokRoomEvent(WebcastSystemMessage msg) { + super(msg.getCommon()); message = msg.getMessage(); } public TikTokRoomEvent(WebcastLiveIntroMessage msg) { - super(msg.getHeader()); - if (msg.hasHost()) { - host = new User(msg.getHost()); - } - message = msg.getDescription(); + super(msg.getCommon()); + host = User.mapOrEmpty(msg.getHost()); + message = msg.getContent(); hostLanguage = msg.getLanguage(); } diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomPinEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomPinEvent.java index 57a358a..1af004e 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomPinEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRoomPinEvent.java @@ -25,19 +25,22 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.messages.WebcastRoomPinMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastRoomPinMessage; import lombok.Getter; @Getter @EventMeta(eventType = EventType.Message) -public class TikTokRoomPinEvent extends TikTokHeaderEvent { - private final Long pinTimeStamp; - private final TikTokCommentEvent comment; +public class TikTokRoomPinEvent extends TikTokHeaderEvent +{ - public TikTokRoomPinEvent(WebcastRoomPinMessage msg) { - super(msg.getHeader()); - this.pinTimeStamp = msg.getTimestamp(); - this.comment = new TikTokCommentEvent(msg.getPinData1()); + private TikTokCommentEvent pinnedMessage; + private long timestamp; + + public TikTokRoomPinEvent(WebcastRoomPinMessage msg, TikTokCommentEvent commentEvent) + { + super(msg.getCommon()); + this.timestamp = msg.getTimestamp(); + this.pinnedMessage = commentEvent; } } 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 index 50272a5..1b18e67 100644 --- 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 @@ -24,10 +24,9 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.TopViewer; -import io.github.jwdeveloper.tiktok.messages.WebcastRoomUserSeqMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastRoomUserSeqMessage; import lombok.Getter; import java.util.List; @@ -35,15 +34,14 @@ import java.util.List; @Getter @EventMeta(eventType = EventType.Message) public class TikTokRoomViewerDataEvent extends TikTokHeaderEvent { - private final Integer viewerCount; - private final List topViewers; + 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(); - } + public TikTokRoomViewerDataEvent(WebcastRoomUserSeqMessage msg) { + super(msg.getCommon()); + //TODO sorting by rank TopViewers = msg?.TopViewers?.Select(t => new Objects.TopViewer(t))?.OrderBy(t => t.Rank)? + viewerCount = (int) msg.getTotalUser(); + topViewers = msg.getRanksListList().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 index 12681c2..b82be8f 100644 --- 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 @@ -24,10 +24,9 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.User; -import io.github.jwdeveloper.tiktok.messages.WebcastSocialMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastSocialMessage; import lombok.Getter; /** @@ -40,14 +39,14 @@ public class TikTokShareEvent extends TikTokHeaderEvent { private final Integer amount; public TikTokShareEvent(WebcastSocialMessage msg, Integer amount) { - super(msg.getHeader());; - user = User.MapOrEmpty(msg.getSender()); + super(msg.getCommon()); + user = User.mapOrEmpty(msg.getUser()); this.amount = amount; } public TikTokShareEvent(WebcastSocialMessage msg) { - super(msg.getHeader()); - user = User.MapOrEmpty(msg.getSender()); + super(msg.getCommon()); + user = User.mapOrEmpty(msg.getUser()); amount = 1; } diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShopEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShopEvent.java index a4fa884..113fb5f 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShopEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokShopEvent.java @@ -26,7 +26,7 @@ import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.Picture; -import io.github.jwdeveloper.tiktok.messages.WebcastOecLiveShoppingMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastOecLiveShoppingMessage; import lombok.Getter; @Getter @@ -43,7 +43,7 @@ public class TikTokShopEvent extends TikTokHeaderEvent { private final String shopName; public TikTokShopEvent(WebcastOecLiveShoppingMessage msg) { - super(msg.getHeader()); + super(msg.getCommon()); var data = msg.getShopData(); title = data.getTitle(); price = data.getPriceString(); 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 index af289f4..66fed09 100644 --- 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 @@ -24,24 +24,19 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.User; -import io.github.jwdeveloper.tiktok.messages.WebcastSubNotifyMessage; -import lombok.Getter; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastSubNotifyMessage; +import lombok.Value; -@Getter +@Value @EventMeta(eventType = EventType.Message) public class TikTokSubNotifyEvent extends TikTokHeaderEvent { - private User user; + User user; public TikTokSubNotifyEvent(WebcastSubNotifyMessage msg) { - super(msg.getHeader()); - - if (msg.hasSender()) { - user = new User(msg.getSender()); - } - + super(msg.getCommon()); + user = User.mapOrEmpty(msg.getUser()); } } 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 index c24051f..7512d1b 100644 --- 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 @@ -24,10 +24,9 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.User; -import io.github.jwdeveloper.tiktok.messages.WebcastMemberMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastMemberMessage; import lombok.Getter; /** @@ -39,7 +38,7 @@ public class TikTokSubscribeEvent extends TikTokHeaderEvent { private User newSubscriber; public TikTokSubscribeEvent(WebcastMemberMessage msg) { - super(msg.getHeader()); + super(msg.getCommon()); if(msg.hasUser()) { 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 index 8c847d7..608e63f 100644 --- 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 @@ -24,36 +24,18 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; -import io.github.jwdeveloper.tiktok.messages.WebcastUnauthorizedMemberMessage; -import lombok.AllArgsConstructor; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastUnauthorizedMemberMessage; import lombok.Getter; @Getter @EventMeta(eventType = EventType.Message) public class TikTokUnauthorizedMemberEvent extends TikTokHeaderEvent { - private final String data; - - private final UnauthorizedMemberData event; - - private final UnauthorizedMemberData underlying; + private final String userNickName; public TikTokUnauthorizedMemberEvent(WebcastUnauthorizedMemberMessage msg) { - super(msg.getHeader()); + super(msg.getCommon()); - data = msg.getData2(); - event = new UnauthorizedMemberData(msg.getDetails1().getType(), msg.getDetails1().getLabel()); - underlying = new UnauthorizedMemberData(msg.getDetails2().getType(), msg.getDetails2().getLabel()); + userNickName = msg.getNickName(); } - - - @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 index 20e1643..c0cd02c 100644 --- 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 @@ -24,10 +24,8 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokUnhandledEvent; -import io.github.jwdeveloper.tiktok.messages.WebcastControlMessage; -import lombok.AllArgsConstructor; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastControlMessage; import lombok.Getter; @Getter 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 index 7d7eb2e..b543d2a 100644 --- 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 @@ -24,10 +24,8 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokUnhandledEvent; -import io.github.jwdeveloper.tiktok.messages.WebcastMemberMessage; -import lombok.AllArgsConstructor; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastMemberMessage; import lombok.Getter; @Getter 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 index ca967fd..52a738a 100644 --- 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 @@ -24,11 +24,8 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokUnhandledEvent; -import io.github.jwdeveloper.tiktok.messages.WebcastMemberMessage; -import io.github.jwdeveloper.tiktok.messages.WebcastSocialMessage; -import lombok.AllArgsConstructor; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastSocialMessage; import lombok.Getter; @Getter diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledWebsocketMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledWebsocketMessageEvent.java index f24faf9..2a868ff 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledWebsocketMessageEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokUnhandledWebsocketMessageEvent.java @@ -24,13 +24,14 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.TikTokEvent; import io.github.jwdeveloper.tiktok.events.base.TikTokUnhandledEvent; -import io.github.jwdeveloper.tiktok.messages.WebcastResponse; -import lombok.AllArgsConstructor; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastResponse; import lombok.Getter; +/** + * Triggered every time a protobuf encoded webcast message arrives. You can deserialize the binary object depending on the use case. + */ @Getter @EventMeta(eventType = EventType.Message) public class TikTokUnhandledWebsocketMessageEvent extends TikTokUnhandledEvent diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokWebsocketMessageEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokWebsocketMessageEvent.java index aeb13cb..3d80f95 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokWebsocketMessageEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokWebsocketMessageEvent.java @@ -25,7 +25,7 @@ package io.github.jwdeveloper.tiktok.events.messages; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; import io.github.jwdeveloper.tiktok.events.TikTokEvent; -import io.github.jwdeveloper.tiktok.messages.WebcastResponse; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastResponse; import lombok.AllArgsConstructor; import lombok.Data; import lombok.Getter; diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/poll/TikTokPollEndEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/poll/TikTokPollEndEvent.java new file mode 100644 index 0000000..3b527fe --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/poll/TikTokPollEndEvent.java @@ -0,0 +1,46 @@ +/* + * 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.events.messages.poll; + +import io.github.jwdeveloper.tiktok.annotations.EventMeta; +import io.github.jwdeveloper.tiktok.annotations.EventType; +import io.github.jwdeveloper.tiktok.events.objects.PollOption; +import io.github.jwdeveloper.tiktok.events.objects.User; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastPollMessage; +import lombok.Getter; + +import java.util.List; + +@EventMeta(eventType = EventType.Custom) +@Getter +public class TikTokPollEndEvent extends TikTokPollEvent +{ + private final User operator; + private final List options; + public TikTokPollEndEvent(WebcastPollMessage msg) { + super(msg); + var end = msg.getEndContent(); + operator = User.mapOrEmpty(end.getOperator()); + options = end.getOptionListList().stream().map(PollOption::map).toList(); + } +} diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/TikTokGift.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/poll/TikTokPollEvent.java similarity index 67% rename from API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/TikTokGift.java rename to API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/poll/TikTokPollEvent.java index ce9b227..10e1efc 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/TikTokGift.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/poll/TikTokPollEvent.java @@ -20,25 +20,22 @@ * 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.events.objects; +package io.github.jwdeveloper.tiktok.events.messages.poll; -import io.github.jwdeveloper.tiktok.messages.WebcastGiftMessage; +import io.github.jwdeveloper.tiktok.annotations.EventMeta; +import io.github.jwdeveloper.tiktok.annotations.EventType; +import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastPollMessage; import lombok.Getter; -import lombok.Setter; @Getter -public class TikTokGift { - private final Gift gift; - private final User sender; - @Setter - private long amount; - @Setter - private boolean streakFinished; +@EventMeta(eventType = EventType.Message) +public class TikTokPollEvent extends TikTokHeaderEvent { + private final Long pollId; - public TikTokGift(Gift gift, WebcastGiftMessage message) { - this.gift = gift; - sender = User.MapOrEmpty(message.getUser()); - amount = message.getComboCount(); - streakFinished = message.getRepeatEnd() > 0; + public TikTokPollEvent(WebcastPollMessage msg) + { + super(msg.getCommon()); + pollId = msg.getPollId(); } } diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokPollEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/poll/TikTokPollStartEvent.java similarity index 57% rename from API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokPollEvent.java rename to API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/poll/TikTokPollStartEvent.java index 6d2e8a1..c420f00 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokPollEvent.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/poll/TikTokPollStartEvent.java @@ -20,34 +20,31 @@ * 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.events.messages; +package io.github.jwdeveloper.tiktok.events.messages.poll; import io.github.jwdeveloper.tiktok.annotations.EventMeta; import io.github.jwdeveloper.tiktok.annotations.EventType; -import io.github.jwdeveloper.tiktok.events.base.TikTokHeaderEvent; import io.github.jwdeveloper.tiktok.events.objects.PollOption; import io.github.jwdeveloper.tiktok.events.objects.User; -import io.github.jwdeveloper.tiktok.messages.WebcastPollMessage; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastPollMessage; import lombok.Getter; import java.util.List; @Getter -@EventMeta(eventType = EventType.Message) -public class TikTokPollEvent extends TikTokHeaderEvent { - private final Long id; +@EventMeta(eventType = EventType.Custom) +public class TikTokPollStartEvent extends TikTokPollEvent { - private final PollOption option1; + private final List options; + private final String title; + private final User operator; - private final PollOption option2; + public TikTokPollStartEvent(WebcastPollMessage msg) { + super(msg); + var startContent = msg.getStartContent(); - private final List options; - - public TikTokPollEvent(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()); + title = startContent.getTitle(); + operator = User.mapOrEmpty(startContent.getOperator()); + options = startContent.getOptionListList().stream().map(PollOption::map).toList(); } } diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/poll/TikTokPollUpdateEvent.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/poll/TikTokPollUpdateEvent.java new file mode 100644 index 0000000..c6b5673 --- /dev/null +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/poll/TikTokPollUpdateEvent.java @@ -0,0 +1,42 @@ +/* + * 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.events.messages.poll; + + +import io.github.jwdeveloper.tiktok.annotations.EventMeta; +import io.github.jwdeveloper.tiktok.annotations.EventType; +import io.github.jwdeveloper.tiktok.events.objects.PollOption; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastPollMessage; +import lombok.Getter; + +import java.util.List; + +@EventMeta(eventType = EventType.Custom) +@Getter +public class TikTokPollUpdateEvent extends TikTokPollEvent { + private final List options; + public TikTokPollUpdateEvent(WebcastPollMessage msg) { + super(msg); + options = msg.getUpdateContent().getOptionListList().stream().map(PollOption::map).toList(); + } +} 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 index 4aed5b6..422be41 100644 --- 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 @@ -22,7 +22,7 @@ */ package io.github.jwdeveloper.tiktok.events.objects; -import io.github.jwdeveloper.tiktok.messages.BadgeStruct; +import io.github.jwdeveloper.tiktok.messages.data.BadgeStruct; import lombok.Value; import java.util.ArrayList; @@ -40,7 +40,7 @@ public class Badge { this.imageBadges = imageBadges; } - public Badge(io.github.jwdeveloper.tiktok.messages.BadgeStruct badge) + public Badge(io.github.jwdeveloper.tiktok.messages.data.BadgeStruct badge) { comboBadges = ComboBadge.map(badge.getCombine()); textBadges = TextBadge.mapAll(badge.getTextList()); 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 index 72d8116..8cd450d 100644 --- 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 @@ -41,6 +41,9 @@ public class BarrageData { this.users = users; } + + + @Value public static class BarrageUser { diff --git a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/LeftIcon.java b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Emote.java similarity index 74% rename from API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/LeftIcon.java rename to API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Emote.java index 47eb454..8ceed32 100644 --- a/API/src/main/java/io/github/jwdeveloper/tiktok/models/gifts/LeftIcon.java +++ b/API/src/main/java/io/github/jwdeveloper/tiktok/events/objects/Emote.java @@ -20,28 +20,20 @@ * 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.models.gifts; +package io.github.jwdeveloper.tiktok.events.objects; -import lombok.Data; +import lombok.Value; -import java.util.List; +import java.util.UUID; + +@Value +public class Emote { + String emoteId; + Picture picture; + UUID uuid; + + public static Emote map(io.github.jwdeveloper.tiktok.messages.data.Emote input) { + return new Emote(input.getEmoteId(), Picture.Map(input.getImage()), UUID.fromString(input.getUuid())); + } -@Data -public class LeftIcon { - private String avg_color; - private int height; - private int image_type; - private boolean is_animated; - private String open_web_url; - private String uri; - private List url_list; - private int width; } - - - - - - - - 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 index 4c64e58..533966a 100644 --- 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 @@ -22,7 +22,7 @@ */ package io.github.jwdeveloper.tiktok.events.objects; -import io.github.jwdeveloper.tiktok.messages.LinkMicArmiesItems; +import io.github.jwdeveloper.tiktok.messages.data.LinkMicArmiesItems; import lombok.Value; import java.util.List; @@ -36,9 +36,7 @@ public class LinkMicArmy { armyId = army.getHostUserId(); armies = army.getBattleGroupsList() .stream() - .map(x -> new Army(x.getUsersList().stream().map(User::MapOrEmpty).toList(), x.getPoints())) - - + .map(x -> new Army(x.getUsersList().stream().map(User::mapOrEmpty).toList(), x.getPoints())) .toList(); } 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 index 421a30b..4b99d91 100644 --- 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 @@ -23,7 +23,7 @@ package io.github.jwdeveloper.tiktok.events.objects; -import io.github.jwdeveloper.tiktok.messages.WebcastLinkMicBattle; +import io.github.jwdeveloper.tiktok.messages.webcast.WebcastLinkMicBattle; import lombok.Getter; import lombok.Value; 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 index 7da3eec..51d81cb 100644 --- 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 @@ -22,38 +22,92 @@ */ package io.github.jwdeveloper.tiktok.events.objects; +import io.github.jwdeveloper.tiktok.exceptions.TikTokLiveException; import lombok.Getter; +import javax.imageio.ImageIO; +import java.awt.*; +import java.awt.image.BufferedImage; +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.net.URL; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; + -@Getter public class Picture { - private final String link; - private boolean downloaded; - private boolean downloading; + @Getter + private final String link; - public Picture(String link) - { - this.link = link; - downloaded= false; - downloading =false; - } - public static Picture Map(io.github.jwdeveloper.tiktok.messages.Image profilePicture) - { - return new Picture(profilePicture.getUri()); - } + private Image image; - public static Picture Empty() - { - return new Picture(""); - } + public Picture(String link) { + this.link = link; + } - public static List EmptyList() - { - return new ArrayList(); - } + public static Picture Map(io.github.jwdeveloper.tiktok.messages.data.Image profilePicture) { + + var index = profilePicture.getUrlListCount() - 1; + if (index <= 0) { + return new Picture(""); + } + var url = profilePicture.getUrlList(index); + return new Picture(url); + } + + public boolean isDownloaded() { + return image != null; + } + + public Image downloadImage() { + if (isDownloaded()) { + return image; + } + if (link.equalsIgnoreCase("")) { + return null; + } + image = download(link); + return image; + } + + public Future downloadImageAsync() { + var executor = Executors.newSingleThreadExecutor(); + var future = executor.submit(this::downloadImage); + executor.shutdown(); + return future; + } + + private BufferedImage download(String urlString) { + var baos = new ByteArrayOutputStream(); + try (var is = new URL(urlString).openStream()) { + var byteChunk = new byte[4096]; + int n; + + while ((n = is.read(byteChunk)) > 0) { + baos.write(byteChunk, 0, n); + } + } catch (IOException e) { + throw new TikTokLiveException("Unable map downloaded image", e); + } + + var bais = new ByteArrayInputStream(baos.toByteArray()); + try { + return ImageIO.read(bais); + } catch (IOException e) { + throw new TikTokLiveException("Unable map downloaded image bytes to Image", e); + } + } + + public static Picture Empty() { + return new Picture(""); + } + + public static List EmptyList() { + return new ArrayList(); + } } 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 index 16397a0..96c7db6 100644 --- 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 @@ -22,8 +22,7 @@ */ package io.github.jwdeveloper.tiktok.events.objects; -import lombok.AllArgsConstructor; -import lombok.Getter; +import io.github.jwdeveloper.tiktok.messages.data.PollOptionInfo; import lombok.Value; import java.util.List; @@ -31,13 +30,18 @@ import java.util.List; @Value public class PollOption { - private final User user; - private final List