mirror of
https://github.com/jwdeveloper/TikTokLiveJava.git
synced 2026-02-27 08:49:40 -05:00
Updated HTTP response code messages
General optimization of classes and removal of no longer needed classes Removed unused imports
This commit is contained in:
@@ -1,43 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
package io.github.jwdeveloper.tiktok.data.events;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.annotations.EventMeta;
|
||||
import io.github.jwdeveloper.tiktok.annotations.EventType;
|
||||
import io.github.jwdeveloper.tiktok.data.events.common.TikTokHeaderEvent;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.data.models.users.User;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@Data
|
||||
@EventMeta(eventType = EventType.Message)
|
||||
public class CustomEvent extends TikTokHeaderEvent {
|
||||
private final User user;
|
||||
private final String title;
|
||||
|
||||
public CustomEvent(User user, String title) {
|
||||
this.user = user;
|
||||
this.title = title;
|
||||
}
|
||||
}
|
||||
@@ -38,8 +38,7 @@ public class TikTokBarrageEvent extends TikTokHeaderEvent {
|
||||
private final Picture rightIcon;
|
||||
private final String eventName;
|
||||
private final int duration;
|
||||
|
||||
private BarrageParam barrageParam;
|
||||
private final BarrageParam barrageParam;
|
||||
|
||||
public TikTokBarrageEvent(WebcastBarrageMessage msg) {
|
||||
super(msg.getCommon());
|
||||
@@ -49,6 +48,5 @@ public class TikTokBarrageEvent extends TikTokHeaderEvent {
|
||||
rightIcon = Picture.map(msg.getRightIcon());
|
||||
duration = msg.getDuration();
|
||||
barrageParam = BarrageParam.map(msg);
|
||||
|
||||
}
|
||||
}
|
||||
@@ -40,7 +40,7 @@ import java.util.List;
|
||||
public class TikTokCommentEvent extends TikTokHeaderEvent {
|
||||
private final User user;
|
||||
private final String text;
|
||||
private final String getUserLanguage;
|
||||
private final String userLanguage;
|
||||
private final User mentionedUser;
|
||||
private final List<Picture> pictures;
|
||||
private final boolean visibleToSender;
|
||||
@@ -50,7 +50,7 @@ public class TikTokCommentEvent extends TikTokHeaderEvent {
|
||||
user = User.map(msg.getUser(), msg.getUserIdentity());
|
||||
text = msg.getContent();
|
||||
visibleToSender = msg.getVisibleToSender();
|
||||
getUserLanguage = msg.getContentLanguage();
|
||||
userLanguage = msg.getContentLanguage();
|
||||
mentionedUser = User.map(msg.getAtUser());
|
||||
pictures = msg.getEmotesListList().stream().map(e -> Picture.map(e.getEmote().getImage())).toList();
|
||||
}
|
||||
|
||||
@@ -30,14 +30,10 @@ import lombok.Getter;
|
||||
@Getter
|
||||
@EventMeta(eventType = EventType.Message)
|
||||
public class TikTokDetectEvent extends TikTokHeaderEvent {
|
||||
String language;
|
||||
|
||||
private final String language;
|
||||
|
||||
public TikTokDetectEvent(WebcastMsgDetectMessage msg) {
|
||||
super(msg.getCommon());
|
||||
language = msg.getFromRegion();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -30,9 +30,11 @@ import lombok.Getter;
|
||||
* Triggered when the connection gets disconnected. In that case you can call connect() again to have a reconnect logic.
|
||||
* Note that you should wait a little bit before attempting a reconnect to to avoid being rate-limited.
|
||||
*/
|
||||
@Getter
|
||||
@EventMeta(eventType = EventType.Control)
|
||||
public class TikTokDisconnectedEvent extends TikTokLiveClientEvent {
|
||||
@Getter private final String reason;
|
||||
private final String reason;
|
||||
|
||||
public TikTokDisconnectedEvent(String reason) {
|
||||
this.reason = reason.isBlank() ? "None" : reason;
|
||||
}
|
||||
|
||||
@@ -22,22 +22,16 @@
|
||||
*/
|
||||
package io.github.jwdeveloper.tiktok.data.events;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.annotations.EventMeta;
|
||||
import io.github.jwdeveloper.tiktok.annotations.EventType;
|
||||
import io.github.jwdeveloper.tiktok.annotations.*;
|
||||
import io.github.jwdeveloper.tiktok.data.events.common.TikTokHeaderEvent;
|
||||
import io.github.jwdeveloper.tiktok.data.models.users.User;
|
||||
import io.github.jwdeveloper.tiktok.messages.webcast.WebcastLinkMessage;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@EventMeta(eventType = EventType.Message)
|
||||
public class TikTokLinkEvent extends TikTokHeaderEvent {
|
||||
|
||||
|
||||
public TikTokLinkEvent(WebcastLinkMessage msg) {
|
||||
super(msg.getCommon());
|
||||
|
||||
}
|
||||
}
|
||||
@@ -33,11 +33,7 @@ import lombok.Getter;
|
||||
@EventMeta(eventType = EventType.Message)
|
||||
public class TikTokLinkLayerEvent extends TikTokHeaderEvent {
|
||||
|
||||
|
||||
public TikTokLinkLayerEvent(WebcastLinkLayerMessage msg) {
|
||||
super(msg.getCommon());
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -36,6 +36,4 @@ public class TikTokLinkMicMethodEvent extends TikTokHeaderEvent {
|
||||
super(msg.getCommon());
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -42,5 +42,4 @@ public class TikTokRankTextEvent extends TikTokHeaderEvent {
|
||||
label = text.getPattern();
|
||||
eventType = text.getKey();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -35,11 +35,9 @@ public class TikTokRankUpdateEvent extends TikTokHeaderEvent {
|
||||
|
||||
public TikTokRankUpdateEvent(WebcastHourlyRankMessage msg) {
|
||||
super(msg.getCommon());
|
||||
|
||||
}
|
||||
|
||||
public TikTokRankUpdateEvent(WebcastRankUpdateMessage msg) {
|
||||
super(msg.getCommon());
|
||||
}
|
||||
|
||||
}
|
||||
@@ -52,5 +52,4 @@ public class TikTokShopEvent extends TikTokHeaderEvent {
|
||||
shopUrl = data.getShopUrl();
|
||||
shopName = data.getShopName();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -30,12 +30,13 @@ import lombok.*;
|
||||
/**
|
||||
* Triggered before the connection is established.
|
||||
*/
|
||||
@Getter
|
||||
@EventMeta(eventType = EventType.Control)
|
||||
public class TikTokPreConnectionEvent extends TikTokLiveClientEvent
|
||||
{
|
||||
@Getter private final LiveUserData.Response userData;
|
||||
@Getter private final LiveData.Response roomData;
|
||||
@Getter @Setter boolean cancelConnection = false;
|
||||
private final LiveUserData.Response userData;
|
||||
private final LiveData.Response roomData;
|
||||
@Setter boolean cancelConnection = false;
|
||||
|
||||
public TikTokPreConnectionEvent(LiveUserData.Response userData, LiveData.Response liveData) {
|
||||
this.userData = userData;
|
||||
|
||||
@@ -30,7 +30,7 @@ import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
|
||||
|
||||
/*
|
||||
/**
|
||||
Triggered when LiveRoomInfo got updated such as likes, viewers, ranking ....
|
||||
*/
|
||||
@Getter
|
||||
|
||||
@@ -33,9 +33,8 @@ import lombok.Getter;
|
||||
@EventMeta(eventType = EventType.Message)
|
||||
public class TikTokRoomPinEvent extends TikTokHeaderEvent
|
||||
{
|
||||
|
||||
private TikTokCommentEvent pinnedMessage;
|
||||
private long timestamp;
|
||||
private final TikTokCommentEvent pinnedMessage;
|
||||
private final long timestamp;
|
||||
|
||||
public TikTokRoomPinEvent(WebcastRoomPinMessage msg, TikTokCommentEvent commentEvent)
|
||||
{
|
||||
@@ -43,5 +42,4 @@ public class TikTokRoomPinEvent extends TikTokHeaderEvent
|
||||
this.timestamp = msg.getTimestamp();
|
||||
this.pinnedMessage = commentEvent;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -24,10 +24,8 @@ package io.github.jwdeveloper.tiktok.data.events.social;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.annotations.EventMeta;
|
||||
import io.github.jwdeveloper.tiktok.annotations.EventType;
|
||||
import io.github.jwdeveloper.tiktok.data.events.TikTokSubscribeEvent;
|
||||
import io.github.jwdeveloper.tiktok.data.events.common.TikTokHeaderEvent;
|
||||
import io.github.jwdeveloper.tiktok.data.models.users.User;
|
||||
import io.github.jwdeveloper.tiktok.messages.webcast.WebcastMemberMessage;
|
||||
import io.github.jwdeveloper.tiktok.messages.webcast.WebcastSocialMessage;
|
||||
import lombok.Value;
|
||||
|
||||
|
||||
@@ -49,5 +49,4 @@ public class TikTokShareEvent extends TikTokHeaderEvent {
|
||||
user = User.map(msg.getUser());
|
||||
totalShares = 1;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,37 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2023-2023 jwdeveloper jacekwoln@gmail.com
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
package io.github.jwdeveloper.tiktok.data.models;
|
||||
|
||||
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());
|
||||
}
|
||||
}
|
||||
@@ -22,7 +22,6 @@
|
||||
*/
|
||||
package io.github.jwdeveloper.tiktok.data.models.gifts;
|
||||
|
||||
//TODO it should be called GiftComboStateType
|
||||
public enum GiftComboStateType {
|
||||
Finished,
|
||||
Begin,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -23,20 +23,12 @@
|
||||
package io.github.jwdeveloper.tiktok.data.requests;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.data.models.gifts.Gift;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class GiftsData
|
||||
{
|
||||
@Getter
|
||||
public final class Request
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
@Getter
|
||||
@AllArgsConstructor
|
||||
public static final class Response
|
||||
@@ -44,5 +36,4 @@ public class GiftsData
|
||||
private String json;
|
||||
private List<Gift> gifts;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -178,6 +178,4 @@ public class LiveClientSettings {
|
||||
headers.put("Accept-Language", "en-US,en; q=0.9");
|
||||
return headers;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -22,51 +22,50 @@
|
||||
*/
|
||||
package io.github.jwdeveloper.tiktok.listener;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.live.LiveClient;
|
||||
|
||||
/**
|
||||
*
|
||||
* @see ListenersManager
|
||||
*
|
||||
* ListenersManager
|
||||
* <p>
|
||||
* TikTokEventListener is an alternative way of handing TikTok events.
|
||||
*
|
||||
* TikTokLive.newClient("someuser").addListener(listener)
|
||||
*
|
||||
* After registertion all listeners are kept in Listener manager
|
||||
* that could be obtained by client.getListenerManager();
|
||||
*
|
||||
* Method in TikTokEventListener should meet 4 requirements to be detected
|
||||
* - must have @TikTokEventHandler annotation
|
||||
* - must have 2 parameters
|
||||
* - first parameter must be LiveClient
|
||||
* - second must be class that extending TikTokEvent
|
||||
*
|
||||
* <p>
|
||||
* {@code TikTokLive.newClient("someuser").addListener(listener);}
|
||||
* <p>
|
||||
* After registertion, all listeners are kept in Listener manager - {@link LiveClient#getListenersManager()}
|
||||
* <p>
|
||||
* Method in TikTokEventListener should meet requirements below to be detected
|
||||
* <p>- @TikTokEventObserver annotation
|
||||
* <p>- 2 parameters of (LiveClient, Class extending TikTokEvent)
|
||||
* <pre>
|
||||
* {@code
|
||||
* public static class CustomListener implements TikTokEventListener
|
||||
* {
|
||||
* @TikTokEventHandler
|
||||
* @TikTokEventObserver
|
||||
* public void onError(LiveClient liveClient, TikTokErrorEvent event)
|
||||
* {
|
||||
* System.out.println(event.getException().getMessage());
|
||||
* }
|
||||
*
|
||||
* @TikTokEventHandler
|
||||
* @TikTokEventObserver
|
||||
* public void onCommentMessage(LiveClient liveClient, TikTokCommentEvent event)
|
||||
* {
|
||||
* System.out.println(event.getText());
|
||||
* }
|
||||
*
|
||||
* @TikTokEventHandler
|
||||
* @TikTokEventObserver
|
||||
* public void onGiftMessage(LiveClient liveClient, TikTokGiftMessageEvent event)
|
||||
* {
|
||||
* System.out.println(event.getGift().getDescription());
|
||||
* }
|
||||
*
|
||||
* @TikTokEventHandler
|
||||
* @TikTokEventObserver
|
||||
* public void onAnyEvent(LiveClient liveClient, TikTokEvent event)
|
||||
* {
|
||||
* System.out.println(event.getClass().getSimpleName());
|
||||
* }
|
||||
* }
|
||||
*
|
||||
* }
|
||||
* </pre>
|
||||
*/
|
||||
public interface TikTokEventListener
|
||||
{
|
||||
|
||||
@@ -91,7 +91,6 @@ public class TikTokLive {
|
||||
return new TikTokLiveHttpClient();
|
||||
}
|
||||
|
||||
//I don't like it, but it is reasonable for now
|
||||
private static GiftsManager giftsManager;
|
||||
|
||||
/**
|
||||
|
||||
@@ -56,7 +56,7 @@ public class TikTokLiveHttpClient implements LiveHttpClient
|
||||
public TikTokLiveHttpClient(HttpClientFactory factory, LiveClientSettings settings) {
|
||||
this.httpFactory = factory;
|
||||
this.clientSettings = settings;
|
||||
this.logger = LoggerFactory.create("HttpClient", clientSettings);
|
||||
this.logger = LoggerFactory.create("HttpClient-"+hashCode(), clientSettings);
|
||||
liveUserDataMapper = new LiveUserDataMapper();
|
||||
liveDataMapper = new LiveDataMapper();
|
||||
giftsDataMapper = new GiftsDataMapper();
|
||||
|
||||
@@ -30,6 +30,7 @@ import lombok.AllArgsConstructor;
|
||||
import java.net.*;
|
||||
import java.net.http.*;
|
||||
import java.nio.charset.*;
|
||||
import java.time.*;
|
||||
import java.util.*;
|
||||
import java.util.regex.*;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -47,7 +48,20 @@ public class HttpClient {
|
||||
try {
|
||||
var response = client.send(request, HttpResponse.BodyHandlers.ofByteArray());
|
||||
var result = ActionResult.of(response);
|
||||
return response.statusCode() != 200 ? result.message("HttpResponse Code: ", response.statusCode()).failure() : result.success();
|
||||
return switch (response.statusCode()) {
|
||||
case 429 -> {
|
||||
var wait = response.headers().firstValue("ratelimit-reset");
|
||||
if (wait.isEmpty())
|
||||
yield result.message("HttpResponse Code:", response.statusCode(), "| Sign server rate limit reached. Try again later.").failure();
|
||||
Duration duration = Duration.ofSeconds(Long.parseLong(wait.get()));
|
||||
yield result.message("HttpResponse Code:", response.statusCode(),
|
||||
String.format("| Sign server rate limit reached. Try again in %02d:%02d.", duration.toMinutesPart(), duration.toSecondsPart())).failure();
|
||||
}
|
||||
case 500, 501, 502, 503 -> result.message("HttpResponse Code:", response.statusCode(), "| Sign server Error. Try again later.").failure();
|
||||
case 504 -> result.message("HttpResponse Code:", response.statusCode(), "| Sign server Timeout. Try again later.").failure();
|
||||
case 200 -> result.success();
|
||||
default -> result.message("HttpResponse Code:", response.statusCode()).failure();
|
||||
};
|
||||
} catch (Exception e) {
|
||||
throw new TikTokLiveRequestException(e);
|
||||
}
|
||||
|
||||
@@ -22,12 +22,7 @@
|
||||
*/
|
||||
package io.github.jwdeveloper.tiktok.gifts;
|
||||
|
||||
import io.github.jwdeveloper.tiktok.data.models.gifts.GiftOld;
|
||||
import io.github.jwdeveloper.tiktok.data.models.Picture;
|
||||
import org.junit.jupiter.api.Assertions;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user