Events handling

This commit is contained in:
JW
2023-08-16 17:36:40 +02:00
parent 59befcd6f9
commit 4b9e531c95
121 changed files with 4368 additions and 613 deletions

View File

@@ -0,0 +1,4 @@
package io.github.jwdeveloper.tiktok.annotations;
public @interface Nullable {
}

View File

@@ -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() {
}
}

View File

@@ -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> {
T onLinkMicFanTicket(Consumer<TikTokLinkMicFanTicketEvent> event);
T onEnvelope(Consumer<TikTokEnvelopeEvent> event);
T onShopMessage(Consumer<TikTokShopMessageEvent> event);
T onDetectMessage(Consumer<TikTokDetectMessageEvent> event);
T onLinkLayerMessage(Consumer<TikTokLinkLayerMessageEvent> event);
T onCaption(Consumer<TikTokCaptionEvent> event);
T onQuestion(Consumer<TikTokQuestionEvent> event);
T onRoomPinMessage(Consumer<TikTokRoomPinMessageEvent> event);
T onRoomMessage(Consumer<TikTokRoomMessageEvent> event);
T onLike(Consumer<TikTokLikeEvent> event);
T onLinkMessage(Consumer<TikTokLinkMessageEvent> event);
T onBarrageMessage(Consumer<TikTokBarrageMessageEvent> event);
T onGiftMessage(Consumer<TikTokGiftMessageEvent> event);
T onLinkMicArmies(Consumer<TikTokLinkMicArmiesEvent> event);
T onEmote(Consumer<TikTokEmoteEvent> event);
T onUnauthorizedMember(Consumer<TikTokUnauthorizedMemberEvent> event);
T onInRoomBanner(Consumer<TikTokInRoomBannerEvent> event);
T onLinkMicMethod(Consumer<TikTokLinkMicMethodEvent> event);
T onSubscribe(Consumer<TikTokSubscribeEvent> event);
T onPollMessage(Consumer<TikTokPollMessageEvent> event);
T onFollow(Consumer<TikTokFollowEvent> event);
T onRoomViewerData(Consumer<TikTokRoomViewerDataEvent> event);
T onGoalUpdate(Consumer<TikTokGoalUpdateEvent> event);
T onComment(Consumer<TikTokCommentEvent> event);
T onRankUpdate(Consumer<TikTokRankUpdateEvent> event);
T onIMDelete(Consumer<TikTokIMDeleteEvent> event);
T onJoin(Consumer<TikTokJoinEvent> event);
T onRankText(Consumer<TikTokRankTextEvent> event);
T onShare(Consumer<TikTokShareEvent> event);
T onSubNotify(Consumer<TikTokSubNotifyEvent> event);
T onLinkMicBattle(Consumer<TikTokLinkMicBattleEvent> event);
T onGiftBroadcast(Consumer<TikTokGiftBroadcastEvent> event);
}

View File

@@ -0,0 +1,8 @@
package io.github.jwdeveloper.tiktok.events;
import io.github.jwdeveloper.tiktok.live.LiveClient;
public interface TikTokLiveEvent<T extends TikTokEvent>
{
void onEvent(LiveClient liveClient, T event);
}

View File

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

View File

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

View File

@@ -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<User> mentionedUsers;
private final List<Picture> 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();
}
}

View File

@@ -0,0 +1,8 @@
package io.github.jwdeveloper.tiktok.events.messages;
import io.github.jwdeveloper.tiktok.events.TikTokEvent;
public class TikTokConnectedEvent extends TikTokEvent
{
}

View File

@@ -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<Number> data;
private final List<Number> 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());
}
}

View File

@@ -0,0 +1,6 @@
package io.github.jwdeveloper.tiktok.events.messages;
import io.github.jwdeveloper.tiktok.events.TikTokEvent;
public class TikTokDisconnectedEvent extends TikTokEvent {
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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<LinkMicBattleTeam> team1;
private final List<LinkMicBattleTeam> 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();
}
}

View File

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

View File

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

View File

@@ -0,0 +1,6 @@
package io.github.jwdeveloper.tiktok.events.messages;
import io.github.jwdeveloper.tiktok.events.TikTokEvent;
public class TikTokLiveEndedEvent extends TikTokEvent {
}

View File

@@ -0,0 +1,6 @@
package io.github.jwdeveloper.tiktok.events.messages;
import io.github.jwdeveloper.tiktok.events.TikTokEvent;
public class TikTokLivePausedEvent extends TikTokEvent {
}

View File

@@ -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<PollOption.Option> 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());
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -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<TextBadge> textBadges;
private final List<ImageBadge> 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;
}
}

View File

@@ -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<BarrageUser> users;
public BarrageData(String eventType, String label, List<BarrageUser> 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;
}
}

View File

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

View File

@@ -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<Army> 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<User> Users;
private final Integer Points;
}
}

View File

@@ -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<User> users;
public LinkMicBattleTeam(WebcastLinkMicBattle.LinkMicBattleTeam team) {
this.teamId = team.getId();
this.users = team.getUsersList().stream().map(User::new).toList();
}
}

View File

@@ -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<String> urls;
public Picture(io.github.jwdeveloper.tiktok.messages.Picture profilePicture) {
this.urls = profilePicture.getUrlsList();
}
public Picture(List<String> urls) {
this.urls = urls;
}
public Picture(String ... urls)
{
this.urls = Arrays.stream(urls).toList();
}
}

View File

@@ -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<Option> options;
@Getter
@AllArgsConstructor
public static final class Option {
private final String label;
private final Integer total;
}
}

View File

@@ -0,0 +1,25 @@
package io.github.jwdeveloper.tiktok.events.objects;
import io.github.jwdeveloper.tiktok.messages.WebcastGiftMessage;
import lombok.Getter;
import lombok.Setter;
@Getter
public class TikTokGift {
private final Gift gift;
private User sender;
@Setter
private int amount;
@Setter
private boolean streakFinished;
public TikTokGift(WebcastGiftMessage message) {
gift = new Gift(message.getGiftDetails());
if (message.hasSender()) {
sender = new User(message.getSender());
}
amount = message.getAmount();
streakFinished = message.getRepeatEnd();
}
}

View File

@@ -0,0 +1,22 @@
package io.github.jwdeveloper.tiktok.events.objects;
import lombok.Getter;
@Getter
public class TopViewer {
private Integer rank;
private User user;
private Integer coinsGiven;
public TopViewer(io.github.jwdeveloper.tiktok.messages.TopViewer viewer)
{
rank = viewer.getRank();
if(viewer.hasUser())
{
user = new User(viewer.getUser());
}
coinsGiven = viewer.getCoinsGiven();
}
}

View File

@@ -0,0 +1,87 @@
package io.github.jwdeveloper.tiktok.events.objects;
import lombok.Getter;
import java.util.ArrayList;
import java.util.List;
@Getter
public class User {
private Long userId;
private String uniqueId;
private final String nickName;
private String description;
private Picture profilePicture;
private Picture picture720;
private Picture picture1080;
private Integer following;
private Integer followers;
private Integer followsHost;
public List<Picture> additionalPictures;
public List<Badge> badges;
public User(Long userId,
String uniqueId,
String nickName,
String description,
Picture profilePicture,
Picture picture720,
Picture picture1080,
List<Picture> additionalPictures,
Integer following,
Integer followers,
Integer followsHost,
List<Badge> badges) {
this.userId = userId;
this.uniqueId = uniqueId;
this.nickName = nickName;
this.description = description;
this.profilePicture = profilePicture;
this.picture720 = picture720;
this.picture1080 = picture1080;
this.additionalPictures = additionalPictures;
this.following = following;
this.followers = followers;
this.followsHost = followsHost;
this.badges = badges;
}
public User(String uniqueId,
String nickName) {
this.uniqueId = uniqueId;
this.nickName = nickName;
}
public User(Long userId,
String nickName,
Picture picture) {
this.userId = userId;
this.nickName = nickName;
this.profilePicture = picture;
}
public User(io.github.jwdeveloper.tiktok.messages.User user) {
assert user != null;
userId = user.getUserId();
uniqueId = user.getUniqueId();
nickName = user.getNickname();
description = user.getDescription();
profilePicture = new Picture(user.getProfilePicture());
picture720 = new Picture(user.getPicture720());
picture1080 = new Picture(user.getPicture1080());
following = user.getFollowerData().getFollowing();
followers = user.getFollowerData().getFollowers();
followsHost = user.getFollowerData().getFollowsHost();
badges = user.getBadgesList().stream().map(Badge::new).toList();
additionalPictures = new ArrayList<>();
}
}

View File

@@ -0,0 +1,23 @@
package io.github.jwdeveloper.tiktok.exceptions;
public class TikTokLiveException extends RuntimeException
{
public TikTokLiveException() {
}
public TikTokLiveException(String message) {
super(message);
}
public TikTokLiveException(String message, Throwable cause) {
super(message, cause);
}
public TikTokLiveException(Throwable cause) {
super(cause);
}
public TikTokLiveException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}

View File

@@ -1,6 +1,7 @@
package io.github.jwdeveloper.tiktok.live;
public interface LiveClient {
void run();
void stop();

View File

@@ -1,6 +0,0 @@
package io.github.jwdeveloper.tiktok.live.models.gift;
public class LockInfo
{
public int lock_type;
}

View File

@@ -1,4 +0,0 @@
package io.github.jwdeveloper.tiktok.live.models.gift;
public class SpecialEffects {
}

View File

@@ -1,4 +0,0 @@
package io.github.jwdeveloper.tiktok.live.models.gift;
public class TrackerParams {
}

View File

@@ -0,0 +1,13 @@
package io.github.jwdeveloper.tiktok.models;
import lombok.AllArgsConstructor;
import lombok.Data;
@Data
@AllArgsConstructor
public class GiftId
{
public long Gift;
public String UserName;
}

View File

@@ -0,0 +1,9 @@
package io.github.jwdeveloper.tiktok.models;
public class SocialTypes
{
public static final String LikeType = "pm_mt_msg_viewer";
public static final String FollowType = "pm_main_follow_message_viewer_2";
public static final String ShareType = "pm_mt_guidance_share";
public static final String JoinType = "pm_mt_join_message_other_viewer";
}

View File

@@ -1,4 +1,4 @@
package io.github.jwdeveloper.tiktok.live.models.gift;
package io.github.jwdeveloper.tiktok.models.gifts;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package io.github.jwdeveloper.tiktok.live.models.gift;
package io.github.jwdeveloper.tiktok.models.gifts;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package io.github.jwdeveloper.tiktok.live.models.gift;
package io.github.jwdeveloper.tiktok.models.gifts;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package io.github.jwdeveloper.tiktok.live.models.gift;
package io.github.jwdeveloper.tiktok.models.gifts;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package io.github.jwdeveloper.tiktok.live.models.gift;
package io.github.jwdeveloper.tiktok.models.gifts;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package io.github.jwdeveloper.tiktok.live.models.gift;
package io.github.jwdeveloper.tiktok.models.gifts;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package io.github.jwdeveloper.tiktok.live.models.gift;
package io.github.jwdeveloper.tiktok.models.gifts;
import lombok.Data;

View File

@@ -0,0 +1,6 @@
package io.github.jwdeveloper.tiktok.models.gifts;
public class LockInfo
{
public int lock_type;
}

View File

@@ -0,0 +1,4 @@
package io.github.jwdeveloper.tiktok.models.gifts;
public class SpecialEffects {
}

View File

@@ -1,4 +1,4 @@
package io.github.jwdeveloper.tiktok.live.models.gift;
package io.github.jwdeveloper.tiktok.models.gifts;
import lombok.Data;

View File

@@ -0,0 +1,4 @@
package io.github.jwdeveloper.tiktok.models.gifts;
public class TrackerParams {
}

File diff suppressed because it is too large Load Diff