`TikTokEventListener` new method of listening events
   see it at TestApplication/ListenerExample.java

Bugs:
 - Fixed bug: Websocket was sending ping after it was closed
This commit is contained in:
JW
2023-09-07 03:19:25 +02:00
parent 911e2b12a5
commit 4a157143ec
99 changed files with 2558 additions and 762 deletions

View File

@@ -26,6 +26,7 @@ public class ClientSettings {
/// </summary>
private boolean retryOnConnectionFailure;
/// <summary>
/// Wait to connect again for selected amount of time
/// </summary>
@@ -65,5 +66,6 @@ public class ClientSettings {
/// Parameters used in requests to tiktok api
/// </summary>
private Map<String, Object> clientParameters;
}

View File

@@ -0,0 +1,10 @@
package io.github.jwdeveloper.tiktok.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface EventMeta
{
EventType eventType();
}

View File

@@ -0,0 +1,10 @@
package io.github.jwdeveloper.tiktok.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
public enum EventType
{
Control, Message, Custom
}

View File

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

View File

@@ -0,0 +1,10 @@
package io.github.jwdeveloper.tiktok.annotations;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface TikTokEventHandler
{
}

View File

@@ -3,39 +3,11 @@ package io.github.jwdeveloper.tiktok.events;
import io.github.jwdeveloper.tiktok.messages.*;
import lombok.Getter;
/*
Base class for all events
*/
@Getter
public class TikTokEvent {
private long messageId;
private long roomId;
private long timeStamp;
public abstract class TikTokEvent
{
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

@@ -66,7 +66,7 @@ public interface TikTokEventBuilder<T> {
T onError(TikTokEventConsumer<TikTokErrorEvent> event);
T onUnhandled(TikTokEventConsumer<TikTokUnhandledEvent> event);
T onUnhandled(TikTokEventConsumer<TikTokUnhandledWebsocketMessageEvent> event);
T onJoin(TikTokEventConsumer<TikTokJoinEvent> event);

View File

@@ -0,0 +1,48 @@
package io.github.jwdeveloper.tiktok.events.base;
import io.github.jwdeveloper.tiktok.events.TikTokEvent;
import io.github.jwdeveloper.tiktok.messages.*;
import lombok.Getter;
@Getter
public class TikTokHeaderEvent extends TikTokEvent {
private final long messageId;
private final long roomId;
private final long timeStamp;
public TikTokHeaderEvent(Common header) {
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;
this.timeStamp = timeStamp;
}
public TikTokHeaderEvent() {
messageId = 0;
roomId = 0;
timeStamp = 0;
}
}

View File

@@ -0,0 +1,7 @@
package io.github.jwdeveloper.tiktok.events.base;
import io.github.jwdeveloper.tiktok.events.TikTokEvent;
public class TikTokLiveClientEvent extends TikTokEvent {
}

View File

@@ -0,0 +1,12 @@
package io.github.jwdeveloper.tiktok.events.base;
import io.github.jwdeveloper.tiktok.events.TikTokEvent;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public class TikTokUnhandledEvent<T> extends TikTokEvent
{
private final T data;
}

View File

@@ -1,29 +1,28 @@
package io.github.jwdeveloper.tiktok.events.messages;
import io.github.jwdeveloper.tiktok.events.TikTokEvent;
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.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;
import lombok.Value;
@Value
@EventMeta(eventType = EventType.Message)
public class TikTokBarrageMessageEvent extends TikTokHeaderEvent {
Picture picture;
Picture picture2;
Picture picture3;
User user;
BarrageData barrageData;
public TikTokBarrageMessageEvent(WebcastBarrageMessage msg) {
super(msg.getHeader());
picture = new Picture(msg.getPicture());
picture2 = new Picture(msg.getPicture2());
picture3 = new Picture(msg.getPicture3());
picture = new Picture(msg.getImage());
picture2 = new Picture(msg.getImage2());
picture3 = new Picture(msg.getImage3());
user = new User(msg.getUserData().getUser());
barrageData = new BarrageData(msg.getMessage().getEventType(),
msg.getMessage().getLabel(),

View File

@@ -1,16 +1,19 @@
package io.github.jwdeveloper.tiktok.events.messages;
import io.github.jwdeveloper.tiktok.events.TikTokEvent;
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 lombok.Getter;
import lombok.Value;
@Getter
public class TikTokCaptionEvent extends TikTokEvent {
private final Long captionTimeStamp;
@Value
@EventMeta(eventType = EventType.Message)
public class TikTokCaptionEvent extends TikTokHeaderEvent {
Long captionTimeStamp;
private final String iSOLanguage;
String iSOLanguage;
private final String text;
String text;
public TikTokCaptionEvent(WebcastCaptionMessage msg) {
super(msg.getHeader());

View File

@@ -1,30 +1,30 @@
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.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.User;
import io.github.jwdeveloper.tiktok.messages.WebcastChatMessage;
import io.github.jwdeveloper.tiktok.messages.WebcastRoomPinMessage;
import lombok.Getter;
import lombok.Value;
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;
@Value
@EventMeta(eventType = EventType.Message)
public class TikTokCommentEvent extends TikTokHeaderEvent {
User user;
String text;
String language;
List<User> mentionedUsers;
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());
user = User.MapOrEmpty(data.getSender());
text = data.getComment();
language = data.getLanguage();
mentionedUsers = new ArrayList<>();
@@ -33,11 +33,10 @@ public class TikTokCommentEvent extends TikTokEvent
public TikTokCommentEvent(WebcastChatMessage msg) {
super(msg.getHeader());
if (msg.hasSender())
user = new User(msg.getSender());
user = User.MapOrEmpty(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();
pictures = msg.getImagesList().stream().map(e -> new Picture(e.getImage())).toList();
}
}

View File

@@ -1,8 +1,9 @@
package io.github.jwdeveloper.tiktok.events.messages;
import io.github.jwdeveloper.tiktok.events.TikTokEvent;
public class TikTokConnectedEvent extends TikTokEvent
import io.github.jwdeveloper.tiktok.annotations.EventMeta;
import io.github.jwdeveloper.tiktok.annotations.EventType;
import io.github.jwdeveloper.tiktok.events.base.TikTokLiveClientEvent;
@EventMeta(eventType = EventType.Control)
public class TikTokConnectedEvent extends TikTokLiveClientEvent
{
}

View File

@@ -1,18 +1,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.WebcastMsgDetectMessage;
import lombok.Getter;
import java.util.List;
@Getter
public class TikTokDetectMessageEvent extends TikTokEvent {
private final String language;
@EventMeta(eventType = EventType.Message)
public class TikTokDetectMessageEvent extends TikTokHeaderEvent {
String language;
private final List<Number> data;
List<Number> data;
private final List<Number> timings;
List<Number> timings;
public TikTokDetectMessageEvent(WebcastMsgDetectMessage msg) {
super(msg.getHeader());;

View File

@@ -1,6 +1,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.base.TikTokLiveClientEvent;
import io.github.jwdeveloper.tiktok.events.TikTokEvent;
public class TikTokDisconnectedEvent extends TikTokEvent {
@EventMeta(eventType = EventType.Control)
public class TikTokDisconnectedEvent extends TikTokLiveClientEvent {
}

View File

@@ -1,25 +1,23 @@
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.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.User;
import io.github.jwdeveloper.tiktok.messages.WebcastEmoteChatMessage;
import lombok.Getter;
import lombok.Value;
@Getter
public class TikTokEmoteEvent extends TikTokEvent
{
@Nullable
private User user;
private final String emoteId;
private final Picture picture;
@Value
@EventMeta(eventType = EventType.Message)
public class TikTokEmoteEvent extends TikTokHeaderEvent {
User user;
String emoteId;
Picture picture;
public TikTokEmoteEvent(WebcastEmoteChatMessage msg) {
super(msg.getHeader());
if (msg.hasSender()) {
user = new User(msg.getSender());
}
user = User.MapOrEmpty(msg.getSender());
emoteId = msg.getDetails().getId();
picture = new Picture(msg.getDetails().getImage().getUrl());
}

View File

@@ -1,14 +1,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.events.objects.User;
import io.github.jwdeveloper.tiktok.messages.WebcastEnvelopeMessage;
import lombok.Getter;
import lombok.Value;
@Getter
public class TikTokEnvelopeEvent extends TikTokEvent {
private final User user;
@Value
@EventMeta(eventType = EventType.Message)
public class TikTokEnvelopeEvent extends TikTokHeaderEvent {
User user;
public TikTokEnvelopeEvent(WebcastEnvelopeMessage msg) {
super(msg.getHeader());
user = new User(msg.getUser().getId(), msg.getUser().getUsername());

View File

@@ -1,12 +1,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.TikTokLiveClientEvent;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public class TikTokErrorEvent extends TikTokEvent
@EventMeta(eventType = EventType.Control)
public class TikTokErrorEvent extends TikTokLiveClientEvent
{
private final Throwable exception;
}

View File

@@ -1,25 +1,22 @@
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.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 lombok.Getter;
import lombok.Value;
@Getter
public class TikTokFollowEvent extends TikTokEvent
@Value
@EventMeta(eventType = EventType.Custom)
public class TikTokFollowEvent extends TikTokHeaderEvent
{
@Nullable
private User newFollower;
private final Long totalFollowers;
User newFollower;
Long totalFollowers;
public TikTokFollowEvent(WebcastSocialMessage msg) {
super(msg.getHeader());
if(msg.hasSender())
{
newFollower = new User(msg.getSender());
}
newFollower = User.MapOrEmpty(msg.getSender());
totalFollowers = msg.getTotalFollowers();
}
}

View File

@@ -1,27 +1,32 @@
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.Picture;
import io.github.jwdeveloper.tiktok.messages.WebcastGiftBroadcastMessage;
import lombok.Getter;
import lombok.Value;
@Getter
public class TikTokGiftBroadcastEvent extends TikTokEvent
@Value
@EventMeta(eventType = EventType.Message)
public class TikTokGiftBroadcastEvent extends TikTokHeaderEvent
{
private final Picture picture;
Picture picture;
private final String shortURL;
String shortURL;
private final String notifyEventType;
String notifyEventType;
private final String notifyLabel;
String notifyLabel;
private final String notifyType;
String notifyType;
public TikTokGiftBroadcastEvent(WebcastGiftBroadcastMessage msg)
{
super(msg.getHeader());
picture = new Picture(msg.getPicture());
picture = new Picture(msg.getImage());
var data = msg.getData();
shortURL = data.getUri();
notifyEventType = data.getRoomNotifyMessage().getData().getType();

View File

@@ -1,41 +1,33 @@
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.annotations.EventMeta;
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.TikTokGift;
import io.github.jwdeveloper.tiktok.events.objects.User;
import io.github.jwdeveloper.tiktok.messages.WebcastGiftMessage;
import lombok.Getter;
import lombok.Value;
@Getter
public class TikTokGiftMessageEvent extends TikTokEvent {
@Value
@EventMeta(eventType = EventType.Message)
public class TikTokGiftMessageEvent extends TikTokHeaderEvent {
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;
Gift gift;
User sender;
String purchaseId;
String receipt;
Long comboCount;
Boolean streakFinished;
Long streakIndex;
public TikTokGiftMessageEvent(WebcastGiftMessage msg) {
super(msg.getHeader());
gift = new Gift(msg.getGiftDetails());
if (msg.hasSender()) {
sender = new User(msg.getSender());
}
super(msg.getCommon());
gift = new Gift(msg.getGift());
sender = User.MapOrEmpty(msg.getUser());
purchaseId = msg.getLogId();
receipt = msg.getReceiptJson();
amount = msg.getAmount();
streakFinished = msg.getRepeatEnd();
receipt = msg.getMonitorExtra();
comboCount = msg.getComboCount();
streakFinished = msg.getRepeatEnd() > 0; //todo check values
streakIndex = msg.getRepeatCount();
}
}

View File

@@ -1,6 +1,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.Picture;
import io.github.jwdeveloper.tiktok.events.objects.User;
@@ -10,7 +13,8 @@ import lombok.Getter;
import java.util.List;
@Getter
public class TikTokGoalUpdateEvent extends TikTokEvent
@EventMeta(eventType = EventType.Message)
public class TikTokGoalUpdateEvent extends TikTokHeaderEvent
{
private final Long goalId;
private final Picture picture;
@@ -20,10 +24,10 @@ public class TikTokGoalUpdateEvent extends TikTokEvent
public TikTokGoalUpdateEvent(WebcastGoalUpdateMessage msg) {
super(msg.getHeader());
picture = new Picture(msg.getPicture());
picture = new Picture(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(),new Picture(u.getProfilePicture()))).toList();
users = msg.getUpdateData().getUsersList().stream().map(u ->new User(u.getId(),u.getNickname(),new Picture(u.getProfileImage()))).toList();
}
}

View File

@@ -1,11 +1,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 lombok.Getter;
@Getter
public class TikTokIMDeleteEvent extends TikTokEvent {
@EventMeta(eventType = EventType.Message)
public class TikTokIMDeleteEvent extends TikTokHeaderEvent {
private final byte[] data;
public TikTokIMDeleteEvent(WebcastImDeleteMessage msg) {

View File

@@ -1,12 +1,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.WebcastInRoomBannerMessage;
import lombok.Getter;
@Getter
public class TikTokInRoomBannerEvent extends TikTokEvent {
private String jSON;
@EventMeta(eventType = EventType.Message)
public class TikTokInRoomBannerEvent extends TikTokHeaderEvent {
private final String jSON;
public TikTokInRoomBannerEvent(WebcastInRoomBannerMessage msg) {
super(msg.getHeader());;

View File

@@ -1,15 +1,16 @@
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.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 lombok.Getter;
@Getter
public class TikTokJoinEvent extends TikTokEvent {
@Nullable
@EventMeta(eventType = EventType.Custom)
public class TikTokJoinEvent extends TikTokHeaderEvent {
private User user;
private final Long totalViewers;

View File

@@ -1,16 +1,17 @@
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.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 lombok.Getter;
@Getter
public class TikTokLikeEvent extends TikTokEvent
@EventMeta(eventType = EventType.Custom)
public class TikTokLikeEvent extends TikTokHeaderEvent
{
@Nullable
private User sender;
private final Integer count;

View File

@@ -1,12 +1,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.WebcastLinkLayerMessage;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
public class TikTokLinkLayerMessageEvent extends TikTokEvent {
@EventMeta(eventType = EventType.Message)
public class TikTokLinkLayerMessageEvent extends TikTokHeaderEvent {
private final Long linkId;
private final LinkData link1;
private final LinkData link2;

View File

@@ -1,7 +1,8 @@
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.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 lombok.Getter;
@@ -9,10 +10,10 @@ import lombok.Getter;
import java.util.List;
@Getter
public class TikTokLinkMessageEvent extends TikTokEvent {
@EventMeta(eventType = EventType.Message)
public class TikTokLinkMessageEvent extends TikTokHeaderEvent {
private final String token;
@Nullable
private User user;
private final List<User> otherUsers;

View File

@@ -1,6 +1,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.LinkMicArmy;
import io.github.jwdeveloper.tiktok.events.objects.Picture;
import io.github.jwdeveloper.tiktok.messages.WebcastLinkMicArmies;
@@ -9,7 +12,8 @@ import lombok.Getter;
import java.util.List;
@Getter
public class TikTokLinkMicArmiesEvent extends TikTokEvent {
@EventMeta(eventType = EventType.Message)
public class TikTokLinkMicArmiesEvent extends TikTokHeaderEvent {
private final Long battleId;
private final Integer battleStatus;
@@ -22,7 +26,7 @@ public class TikTokLinkMicArmiesEvent extends TikTokEvent {
super(msg.getHeader());
battleId = msg.getId();
armies = msg.getBattleItemsList().stream().map(LinkMicArmy::new).toList();
picture = new Picture(msg.getPicture());
picture = new Picture(msg.getImage());
battleStatus = msg.getBattleStatus();
}
}

View File

@@ -1,6 +1,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 lombok.Getter;
@@ -8,7 +11,8 @@ import lombok.Getter;
import java.util.List;
@Getter
public class TikTokLinkMicBattleEvent extends TikTokEvent {
@EventMeta(eventType = EventType.Message)
public class TikTokLinkMicBattleEvent extends TikTokHeaderEvent {
private final Long battleId;
private final List<LinkMicBattleTeam> team1;
private final List<LinkMicBattleTeam> team2;

View File

@@ -1,11 +1,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.WebcastLinkMicFanTicketMethod;
import lombok.Getter;
@Getter
public class TikTokLinkMicFanTicketEvent extends TikTokEvent {
@EventMeta(eventType = EventType.Message)
public class TikTokLinkMicFanTicketEvent extends TikTokHeaderEvent {
private final Long id;
private final Integer data1;
private final Integer data2;

View File

@@ -1,12 +1,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.LinkMicMethod;
import io.github.jwdeveloper.tiktok.messages.WebcastLinkMicMethod;
import lombok.Getter;
@Getter
public class TikTokLinkMicMethodEvent extends TikTokEvent {
@EventMeta(eventType = EventType.Message)
public class TikTokLinkMicMethodEvent extends TikTokHeaderEvent {
private final String jSON;
public TikTokLinkMicMethodEvent(WebcastLinkMicMethod msg) {

View File

@@ -1,6 +1,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;
@EventMeta(eventType = EventType.Custom)
public class TikTokLiveEndedEvent extends TikTokEvent {
}

View File

@@ -1,6 +1,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;
@EventMeta(eventType = EventType.Custom)
public class TikTokLivePausedEvent extends TikTokEvent {
}

View File

@@ -1,6 +1,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.PollOption;
import io.github.jwdeveloper.tiktok.events.objects.User;
import io.github.jwdeveloper.tiktok.messages.WebcastPollMessage;
@@ -9,7 +12,8 @@ import lombok.Getter;
import java.util.List;
@Getter
public class TikTokPollMessageEvent extends TikTokEvent {
@EventMeta(eventType = EventType.Message)
public class TikTokPollMessageEvent extends TikTokHeaderEvent {
private final Long id;
private final PollOption option1;

View File

@@ -1,12 +1,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.events.objects.User;
import io.github.jwdeveloper.tiktok.messages.WebcastQuestionNewMessage;
import lombok.Getter;
@Getter
public class TikTokQuestionEvent extends TikTokEvent {
@EventMeta(eventType = EventType.Message)
public class TikTokQuestionEvent extends TikTokHeaderEvent {
private final Long questionId;
private final String text;

View File

@@ -1,14 +1,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.WebcastRankTextMessage;
import lombok.Getter;
@Getter
public class TikTokRankTextEvent extends TikTokEvent {
private String eventType;
@EventMeta(eventType = EventType.Message)
public class TikTokRankTextEvent extends TikTokHeaderEvent {
private final String eventType;
private String label;
private final String label;
public TikTokRankTextEvent(WebcastRankTextMessage msg) {

View File

@@ -1,12 +1,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.WebcastHourlyRankMessage;
import io.github.jwdeveloper.tiktok.messages.WebcastRankUpdateMessage;
import lombok.Getter;
@Getter
public class TikTokRankUpdateEvent extends TikTokEvent {
@EventMeta(eventType = EventType.Message)
public class TikTokRankUpdateEvent extends TikTokHeaderEvent {
private final String eventType;
private final String label;

View File

@@ -1,7 +1,8 @@
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.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;
@@ -10,10 +11,9 @@ import io.github.jwdeveloper.tiktok.messages.WebcastRoomMessage;
import lombok.Getter;
@Getter
public class TikTokRoomMessageEvent extends TikTokEvent {
@Nullable
@EventMeta(eventType = EventType.Message)
public class TikTokRoomMessageEvent extends TikTokHeaderEvent {
private User host;
@Nullable
private String hostLanguage;
private final String message;

View File

@@ -1,11 +1,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.WebcastRoomPinMessage;
import lombok.Getter;
@Getter
public class TikTokRoomPinMessageEvent extends TikTokEvent {
@EventMeta(eventType = EventType.Message)
public class TikTokRoomPinMessageEvent extends TikTokHeaderEvent {
private final Long pinTimeStamp;
private final TikTokCommentEvent comment;

View File

@@ -1,6 +1,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 lombok.Getter;
@@ -8,7 +11,8 @@ import lombok.Getter;
import java.util.List;
@Getter
public class TikTokRoomViewerDataEvent extends TikTokEvent {
@EventMeta(eventType = EventType.Message)
public class TikTokRoomViewerDataEvent extends TikTokHeaderEvent {
private final Integer viewerCount;
private final List<TopViewer> topViewers;

View File

@@ -1,31 +1,28 @@
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 lombok.Getter;
@Getter
public class TikTokShareEvent extends TikTokEvent {
private User user;
private Integer amount;
@EventMeta(eventType = EventType.Custom)
public class TikTokShareEvent extends TikTokHeaderEvent {
private final User user;
private final Integer amount;
public TikTokShareEvent(WebcastSocialMessage msg, Integer amount) {
super(msg.getHeader());;
if(msg.hasSender())
{
user = new User(msg.getSender());
}
user = User.MapOrEmpty(msg.getSender());
this.amount = amount;
}
public TikTokShareEvent(WebcastSocialMessage msg) {
super(msg.getHeader());
if(msg.hasSender())
{
user = new User(msg.getSender());
}
user = User.MapOrEmpty(msg.getSender());
amount = 1;
}

View File

@@ -1,12 +1,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.events.objects.Picture;
import io.github.jwdeveloper.tiktok.messages.WebcastOecLiveShoppingMessage;
import lombok.Getter;
@Getter
public class TikTokShopMessageEvent extends TikTokEvent {
@EventMeta(eventType = EventType.Message)
public class TikTokShopMessageEvent extends TikTokHeaderEvent {
private final String title;
private final String price;

View File

@@ -1,12 +1,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.events.objects.User;
import io.github.jwdeveloper.tiktok.messages.WebcastSubNotifyMessage;
import lombok.Getter;
@Getter
public class TikTokSubNotifyEvent extends TikTokEvent {
@EventMeta(eventType = EventType.Message)
public class TikTokSubNotifyEvent extends TikTokHeaderEvent {
private User user;
public TikTokSubNotifyEvent(WebcastSubNotifyMessage msg) {

View File

@@ -1,12 +1,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.events.objects.User;
import io.github.jwdeveloper.tiktok.messages.WebcastMemberMessage;
import lombok.Getter;
@Getter
public class TikTokSubscribeEvent extends TikTokEvent {
@EventMeta(eventType = EventType.Custom)
public class TikTokSubscribeEvent extends TikTokHeaderEvent {
private User newSubscriber;
public TikTokSubscribeEvent(WebcastMemberMessage msg) {

View File

@@ -1,12 +1,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.WebcastUnauthorizedMemberMessage;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
public class TikTokUnauthorizedMemberEvent extends TikTokEvent {
@EventMeta(eventType = EventType.Message)
public class TikTokUnauthorizedMemberEvent extends TikTokHeaderEvent {
private final String data;
private final UnauthorizedMemberData event;

View File

@@ -1,13 +1,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.TikTokUnhandledEvent;
import io.github.jwdeveloper.tiktok.messages.WebcastControlMessage;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public class TikTokUnhandledControlEvent extends TikTokEvent {
@EventMeta(eventType = EventType.Custom)
public class TikTokUnhandledControlEvent extends TikTokUnhandledEvent<WebcastControlMessage> {
private final WebcastControlMessage message;
public TikTokUnhandledControlEvent(WebcastControlMessage data) {
super(data);
}
}

View File

@@ -1,14 +0,0 @@
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

@@ -1,13 +1,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.TikTokUnhandledEvent;
import io.github.jwdeveloper.tiktok.messages.WebcastMemberMessage;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public class TikTokUnhandledMemberEvent extends TikTokEvent
@EventMeta(eventType = EventType.Message)
public class TikTokUnhandledMemberEvent extends TikTokUnhandledEvent<WebcastMemberMessage>
{
private final WebcastMemberMessage message;
public TikTokUnhandledMemberEvent(WebcastMemberMessage data) {
super(data);
}
}

View File

@@ -1,13 +1,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.TikTokUnhandledEvent;
import io.github.jwdeveloper.tiktok.messages.WebcastMemberMessage;
import io.github.jwdeveloper.tiktok.messages.WebcastSocialMessage;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public class TikTokUnhandledSocialEvent extends TikTokEvent
@EventMeta(eventType = EventType.Custom)
public class TikTokUnhandledSocialEvent extends TikTokUnhandledEvent<WebcastSocialMessage>
{
private final WebcastSocialMessage message;
public TikTokUnhandledSocialEvent(WebcastSocialMessage data) {
super(data);
}
}

View File

@@ -0,0 +1,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.TikTokUnhandledEvent;
import io.github.jwdeveloper.tiktok.messages.WebcastResponse;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@EventMeta(eventType = EventType.Message)
public class TikTokUnhandledWebsocketMessageEvent extends TikTokUnhandledEvent<WebcastResponse.Message>
{
public TikTokUnhandledWebsocketMessageEvent(WebcastResponse.Message data) {
super(data);
}
}

View File

@@ -1,16 +1,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.TikTokEvent;
import io.github.jwdeveloper.tiktok.messages.WebcastResponse;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.Getter;
/**
* Happens when TikTok websocket receive message from server
*/
@Data
@Getter
@AllArgsConstructor
@EventMeta(eventType = EventType.Custom)
public class TikTokWebsocketMessageEvent extends TikTokEvent
{
private TikTokEvent event;

View File

@@ -1,41 +1,77 @@
package io.github.jwdeveloper.tiktok.events.objects;
import lombok.AllArgsConstructor;
import lombok.Getter;
import io.github.jwdeveloper.tiktok.messages.BadgeStruct;
import lombok.Value;
import java.util.ArrayList;
import java.util.List;
@Getter
@Value
public class Badge {
private ComboBadge comboBadges;
private final List<TextBadge> textBadges;
private final List<ImageBadge> imageBadges;
ComboBadge comboBadges;
List<TextBadge> textBadges;
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());
public Badge(ComboBadge comboBadges, List<TextBadge> textBadges, List<ImageBadge> imageBadges) {
this.comboBadges = comboBadges;
this.textBadges = textBadges;
this.imageBadges = imageBadges;
}
@AllArgsConstructor
@Getter
public class TextBadge {
private final String type;
private final String name;
public Badge(io.github.jwdeveloper.tiktok.messages.BadgeStruct badge)
{
comboBadges = ComboBadge.map(badge.getCombine());
textBadges = TextBadge.mapAll(badge.getTextList());
imageBadges = ImageBadge.mapAll(badge.getImageList());
}
@AllArgsConstructor
@Getter
public class ImageBadge {
private final Integer displayType;
private final Picture image;
@Value
public static class TextBadge {
EnumValue type;
String name;
public static TextBadge map(BadgeStruct.TextBadge input) {
return new TextBadge(EnumValue.Map(input.getDisplayType()),input.getKey());
}
public static List<TextBadge> mapAll(List<BadgeStruct.TextBadge> list) {
return list.stream().map(TextBadge::map).toList();
}
}
@AllArgsConstructor
@Getter
public class ComboBadge {
private final Picture image;
private final String data;
@Value
public static class ImageBadge {
EnumValue displayType;
Picture image;
public static ImageBadge map(BadgeStruct.ImageBadge input) {
return new ImageBadge(EnumValue.Map(input.getDisplayType()), Picture.Map(input.getImage()));
}
public static List<ImageBadge> mapAll(List<BadgeStruct.ImageBadge> list) {
return list.stream().map(ImageBadge::map).toList();
}
}
@Value
public static class ComboBadge {
Picture image;
String data;
public static ComboBadge map(BadgeStruct.CombineBadge input) {
return new ComboBadge(Picture.Map(input.getIcon()),input.getStr());
}
public static List<ComboBadge> mapAll(List<BadgeStruct.CombineBadge> list) {
return list.stream().map(ComboBadge::map).toList();
}
}
public static Badge Empty() {
var comboBadge = new ComboBadge(Picture.Empty(), "");
var textBadges = new ArrayList<TextBadge>();
var imageBadges = new ArrayList<ImageBadge>();
return new Badge(comboBadge, textBadges, imageBadges);
}
public static List<Badge> EmptyList() {
return new ArrayList<Badge>();
}
}

View File

@@ -2,14 +2,15 @@ package io.github.jwdeveloper.tiktok.events.objects;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Value;
import java.util.List;
@Getter
@Value
public class BarrageData {
private final String eventType;
private final String label;
private final List<BarrageUser> users;
String eventType;
String label;
List<BarrageUser> users;
public BarrageData(String eventType, String label, List<BarrageUser> users)
{
@@ -18,12 +19,11 @@ public class BarrageData {
this.users = users;
}
@Getter
@AllArgsConstructor
public static final class BarrageUser
@Value
public static class BarrageUser
{
private final User user;
User user;
private final String data;
String data;
}
}

View File

@@ -0,0 +1,15 @@
package io.github.jwdeveloper.tiktok.events.objects;
import lombok.Value;
@Value
public class EnumValue
{
public int value;
public String name;
public static EnumValue Map(Enum<?> _enum)
{
return new EnumValue(_enum.ordinal() ,_enum.name());
}
}

View File

@@ -1,27 +1,22 @@
package io.github.jwdeveloper.tiktok.events.objects;
import lombok.Getter;
import lombok.Value;
@Getter
@Value
public class Gift {
private final Long id;
Long id;
String name;
String description;
Integer diamondCost;
Integer type;
Picture picture;
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) {
public Gift(io.github.jwdeveloper.tiktok.messages.GiftStruct gift) {
id = gift.getId();
name = gift.getName();
description = gift.getDescription();
diamondCost = gift.getCoinCount();
type = gift.getGiftType();
description = gift.getDescribe();
diamondCost = gift.getDiamondCount();
type = gift.getType();
picture = new Picture(gift.getImage());
}
}

View File

@@ -1,31 +1,28 @@
package io.github.jwdeveloper.tiktok.events.objects;
import io.github.jwdeveloper.tiktok.messages.LinkMicArmiesItems;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Value;
import java.util.List;
@Getter
@Value
public class LinkMicArmy {
private final Long armyId;
private final List<Army> armies;
Long armyId;
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()))
.map(x -> new Army(x.getUsersList().stream().map(User::MapOrEmpty).toList(), x.getPoints()))
.toList();
}
@Getter
@AllArgsConstructor
public final class Army {
private final List<User> Users;
private final Integer Points;
@Value
public static class Army {
List<User> Users;
Integer Points;
}
}

View File

@@ -3,13 +3,14 @@ package io.github.jwdeveloper.tiktok.events.objects;
import io.github.jwdeveloper.tiktok.messages.WebcastLinkMicBattle;
import lombok.Getter;
import lombok.Value;
import java.util.List;
@Getter
@Value
public class LinkMicBattleTeam {
private final Long teamId;
private final List<User> users;
Long teamId;
List<User> users;
public LinkMicBattleTeam(WebcastLinkMicBattle.LinkMicBattleTeam team) {
this.teamId = team.getId();

View File

@@ -1,19 +1,20 @@
package io.github.jwdeveloper.tiktok.events.objects;
import lombok.Getter;
import lombok.Value;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@Getter
@Value
public class Picture {
public final List<String> urls;
List<String> urls;
public Picture(io.github.jwdeveloper.tiktok.messages.Picture profilePicture) {
this.urls = profilePicture.getUrlsList();
public Picture(io.github.jwdeveloper.tiktok.messages.Image profilePicture) {
this.urls = profilePicture.getUrlListList();
}
public Picture(List<String> urls) {
this.urls = urls;
}
@@ -22,4 +23,29 @@ public class Picture {
{
this.urls = Arrays.stream(urls).toList();
}
public void downlaod()
{
}
public void downloadAsync()
{
}
public static Picture Map(io.github.jwdeveloper.tiktok.messages.Image profilePicture)
{
return new Picture(profilePicture.getUrlListList());
}
public static Picture Empty()
{
return new Picture();
}
public static List<Picture> EmptyList()
{
return new ArrayList<Picture>();
}
}

View File

@@ -2,18 +2,17 @@ package io.github.jwdeveloper.tiktok.events.objects;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Value;
import java.util.List;
@Getter
@AllArgsConstructor
@Value
public class PollOption {
private final User user;
private final List<Option> options;
@Getter
@AllArgsConstructor
@Value
public static final class Option {
private final String label;

View File

@@ -7,19 +7,16 @@ import lombok.Setter;
@Getter
public class TikTokGift {
private final Gift gift;
private User sender;
private final User sender;
@Setter
private int amount;
private long amount;
@Setter
private boolean streakFinished;
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();
gift = new Gift(message.getGift());
sender = User.MapOrEmpty(message.getUser());
amount = message.getComboCount();
streakFinished = message.getRepeatEnd() > 0;
}
}

View File

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

View File

@@ -20,14 +20,14 @@ public class User {
private Picture picture1080;
private Integer following;
private long following;
private Integer followers;
private long followers;
private Integer followsHost;
public List<Picture> additionalPictures;
private long followsHost;
private List<Picture> additionalPictures;
public List<Badge> badges;
private List<Badge> badges;
public User(Long userId,
String uniqueId,
@@ -71,17 +71,39 @@ public class User {
public User(io.github.jwdeveloper.tiktok.messages.User user) {
assert user != null;
userId = user.getUserId();
uniqueId = user.getUniqueId();
userId = user.getId();
uniqueId = user.getSpecialId();
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();
description = user.getBioDescription();
profilePicture = new Picture(user.getAvatarThumb());
picture720 = new Picture(user.getAvatarMedium());
picture1080 = new Picture(user.getAvatarLarge());
following = user.getFollowInfo().getFollowingCount();
followers = user.getFollowInfo().getFollowerCount();
followsHost = user.getFollowInfo().getFollowStatus();
badges = user.getBadgeListList().stream().map(Badge::new).toList();
additionalPictures = new ArrayList<>();
}
public static User MapOrEmpty(io.github.jwdeveloper.tiktok.messages.User user)
{
if(user != null)
{
return new User(user);
}
return new User(0L,
"",
"",
"",
Picture.Empty(),
Picture.Empty(),
Picture.Empty(),
Picture.EmptyList(),
0,
0,
0,
Badge.EmptyList());
}
}

View File

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

View File

@@ -1,13 +1,12 @@
package io.github.jwdeveloper.tiktok.http;
import java.net.http.HttpRequest;
import java.util.Map;
public interface TikTokHttpRequest {
TikTokHttpRequest SetQueries(Map<String, Object> queries);
TikTokHttpRequest setQueries(Map<String, Object> queries);
TikTokHttpRequest setHeader(String key, String value);
String Get(String url);
String get(String url);
String Post(String url, HttpRequest.BodyPublisher data);
String post(String url);
}

View File

@@ -0,0 +1,11 @@
package io.github.jwdeveloper.tiktok.listener;
import java.util.List;
public interface ListenersManager
{
List<TikTokEventListener> getBindingModels();
void addListener(TikTokEventListener listener);
void removeListener(TikTokEventListener listener);
}

View File

@@ -0,0 +1,6 @@
package io.github.jwdeveloper.tiktok.listener;
public interface TikTokEventListener
{
}

View File

@@ -1,11 +1,19 @@
package io.github.jwdeveloper.tiktok.live;
import io.github.jwdeveloper.tiktok.listener.ListenersManager;
public interface LiveClient {
// Connects to the live stream.
void connect();
// Disconnects the connection.
void disconnect();
// Gets the meta information about all gifts.
GiftManager getGiftManager();
// Gets the current room info from TikTok API including streamer info, room status and statistics.
LiveRoomInfo getRoomInfo();
ListenersManager getListenersManager();
}

File diff suppressed because it is too large Load Diff