Skip to content

Commit d9ef60c

Browse files
committed
Changes:
- Implementation on all features in `clientSettings` - Code optimization - More detail exceptions - Downloading gifts
1 parent 74bfe0b commit d9ef60c

File tree

46 files changed

+685
-569
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+685
-569
lines changed

API/src/main/java/io/github/jwdeveloper/tiktok/ClientSettings.java

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,7 @@ public class ClientSettings {
1212
/// <summary>
1313
/// Timeout for Connections
1414
/// </summary>
15-
1615
private Duration timeout;
17-
/// <summary>
18-
/// Polling-Interval for Socket-Connection
19-
/// </summary
20-
21-
private Duration pollingInterval;
22-
/// <summary>
23-
/// Proxy for Connection
24-
/// </summary>
2516

2617
// public RotatingProxy Proxy;
2718
/// <summary>
@@ -35,6 +26,11 @@ public class ClientSettings {
3526
/// </summary>
3627
private boolean retryOnConnectionFailure;
3728

29+
/// <summary>
30+
/// Wait to connect again for selected amount of time
31+
/// </summary>
32+
private Duration retryConnectionTimeout;
33+
3834
/// <summary>
3935
/// Whether to handle Messages received from Room when Connecting
4036
/// </summary>
@@ -59,12 +55,6 @@ public class ClientSettings {
5955
/// </summary>
6056
private boolean printMessageData;
6157

62-
/// <summary>
63-
/// Whether to check Messages for Unparsed Data
64-
/// </summary>
65-
private boolean checkForUnparsedData;
66-
67-
6858
/// <summary>
6959
/// Tiktok user name
7060
/// </summary>

API/src/main/java/io/github/jwdeveloper/tiktok/Constants.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,13 @@ public class Constants {
4040
public static ClientSettings DefaultClientSettings() {
4141
var clientSettings = new ClientSettings();
4242
clientSettings.setTimeout(Duration.ofSeconds(DEFAULT_TIMEOUT));
43-
clientSettings.setPollingInterval(Duration.ofSeconds(DEFAULT_POLLTIME));
4443
clientSettings.setClientLanguage("en-US");
4544
clientSettings.setHandleExistingMessagesOnConnect(true);
4645
clientSettings.setDownloadGiftInfo(true);
47-
clientSettings.setRetryOnConnectionFailure(true);
48-
clientSettings.setPrintToConsole(true);
46+
clientSettings.setRetryOnConnectionFailure(false);
47+
clientSettings.setRetryConnectionTimeout(Duration.ofSeconds(1));
48+
clientSettings.setPrintToConsole(false);
4949
clientSettings.setLogLevel(Level.ALL);
50-
clientSettings.setCheckForUnparsedData(false);
5150
clientSettings.setPrintMessageData(false);
5251
clientSettings.setClientParameters(Constants.DefaultClientParams());
5352
return clientSettings;
Lines changed: 42 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,95 +1,94 @@
11
package io.github.jwdeveloper.tiktok.events;
22

33
import io.github.jwdeveloper.tiktok.events.messages.*;
4-
54
import java.util.function.Consumer;
65

76

87

98
public interface TikTokEventBuilder<T> {
10-
T onUnhandledSocial(Consumer<TikTokUnhandledSocialEvent> event);
9+
T onUnhandledSocial(TikTokEventConsumer<TikTokUnhandledSocialEvent> event);
1110

12-
T onLinkMicFanTicket(Consumer<TikTokLinkMicFanTicketEvent> event);
11+
T onLinkMicFanTicket(TikTokEventConsumer<TikTokLinkMicFanTicketEvent> event);
1312

14-
T onEnvelope(Consumer<TikTokEnvelopeEvent> event);
13+
T onEnvelope(TikTokEventConsumer<TikTokEnvelopeEvent> event);
1514

16-
T onShopMessage(Consumer<TikTokShopMessageEvent> event);
15+
T onShopMessage(TikTokEventConsumer<TikTokShopMessageEvent> event);
1716

18-
T onDetectMessage(Consumer<TikTokDetectMessageEvent> event);
17+
T onDetectMessage(TikTokEventConsumer<TikTokDetectMessageEvent> event);
1918

20-
T onLinkLayerMessage(Consumer<TikTokLinkLayerMessageEvent> event);
19+
T onLinkLayerMessage(TikTokEventConsumer<TikTokLinkLayerMessageEvent> event);
2120

22-
T onConnected(Consumer<TikTokConnectedEvent> event);
21+
T onConnected(TikTokEventConsumer<TikTokConnectedEvent> event);
2322

24-
T onCaption(Consumer<TikTokCaptionEvent> event);
23+
T onCaption(TikTokEventConsumer<TikTokCaptionEvent> event);
2524

26-
T onQuestion(Consumer<TikTokQuestionEvent> event);
25+
T onQuestion(TikTokEventConsumer<TikTokQuestionEvent> event);
2726

28-
T onRoomPinMessage(Consumer<TikTokRoomPinMessageEvent> event);
27+
T onRoomPinMessage(TikTokEventConsumer<TikTokRoomPinMessageEvent> event);
2928

30-
T onRoomMessage(Consumer<TikTokRoomMessageEvent> event);
29+
T onRoomMessage(TikTokEventConsumer<TikTokRoomMessageEvent> event);
3130

32-
T onLivePaused(Consumer<TikTokLivePausedEvent> event);
31+
T onLivePaused(TikTokEventConsumer<TikTokLivePausedEvent> event);
3332

34-
T onLike(Consumer<TikTokLikeEvent> event);
33+
T onLike(TikTokEventConsumer<TikTokLikeEvent> event);
3534

36-
T onLinkMessage(Consumer<TikTokLinkMessageEvent> event);
35+
T onLinkMessage(TikTokEventConsumer<TikTokLinkMessageEvent> event);
3736

38-
T onBarrageMessage(Consumer<TikTokBarrageMessageEvent> event);
37+
T onBarrageMessage(TikTokEventConsumer<TikTokBarrageMessageEvent> event);
3938

40-
T onGiftMessage(Consumer<TikTokGiftMessageEvent> event);
39+
T onGiftMessage(TikTokEventConsumer<TikTokGiftMessageEvent> event);
4140

42-
T onLinkMicArmies(Consumer<TikTokLinkMicArmiesEvent> event);
41+
T onLinkMicArmies(TikTokEventConsumer<TikTokLinkMicArmiesEvent> event);
4342

44-
T onEmote(Consumer<TikTokEmoteEvent> event);
43+
T onEmote(TikTokEventConsumer<TikTokEmoteEvent> event);
4544

46-
T onUnauthorizedMember(Consumer<TikTokUnauthorizedMemberEvent> event);
45+
T onUnauthorizedMember(TikTokEventConsumer<TikTokUnauthorizedMemberEvent> event);
4746

48-
T onInRoomBanner(Consumer<TikTokInRoomBannerEvent> event);
47+
T onInRoomBanner(TikTokEventConsumer<TikTokInRoomBannerEvent> event);
4948

50-
T onLinkMicMethod(Consumer<TikTokLinkMicMethodEvent> event);
49+
T onLinkMicMethod(TikTokEventConsumer<TikTokLinkMicMethodEvent> event);
5150

52-
T onSubscribe(Consumer<TikTokSubscribeEvent> event);
51+
T onSubscribe(TikTokEventConsumer<TikTokSubscribeEvent> event);
5352

54-
T onPollMessage(Consumer<TikTokPollMessageEvent> event);
53+
T onPollMessage(TikTokEventConsumer<TikTokPollMessageEvent> event);
5554

56-
T onFollow(Consumer<TikTokFollowEvent> event);
55+
T onFollow(TikTokEventConsumer<TikTokFollowEvent> event);
5756

58-
T onRoomViewerData(Consumer<TikTokRoomViewerDataEvent> event);
57+
T onRoomViewerData(TikTokEventConsumer<TikTokRoomViewerDataEvent> event);
5958

60-
T onGoalUpdate(Consumer<TikTokGoalUpdateEvent> event);
59+
T onGoalUpdate(TikTokEventConsumer<TikTokGoalUpdateEvent> event);
6160

62-
T onComment(Consumer<TikTokCommentEvent> event);
61+
T onComment(TikTokEventConsumer<TikTokCommentEvent> event);
6362

64-
T onRankUpdate(Consumer<TikTokRankUpdateEvent> event);
63+
T onRankUpdate(TikTokEventConsumer<TikTokRankUpdateEvent> event);
6564

66-
T onIMDelete(Consumer<TikTokIMDeleteEvent> event);
65+
T onIMDelete(TikTokEventConsumer<TikTokIMDeleteEvent> event);
6766

68-
T onLiveEnded(Consumer<TikTokLiveEndedEvent> event);
67+
T onLiveEnded(TikTokEventConsumer<TikTokLiveEndedEvent> event);
6968

70-
T onError(Consumer<TikTokErrorEvent> event);
69+
T onError(TikTokEventConsumer<TikTokErrorEvent> event);
7170

72-
T onUnhandled(Consumer<TikTokUnhandledEvent> event);
71+
T onUnhandled(TikTokEventConsumer<TikTokUnhandledEvent> event);
7372

74-
T onJoin(Consumer<TikTokJoinEvent> event);
73+
T onJoin(TikTokEventConsumer<TikTokJoinEvent> event);
7574

76-
T onRankText(Consumer<TikTokRankTextEvent> event);
75+
T onRankText(TikTokEventConsumer<TikTokRankTextEvent> event);
7776

78-
T onShare(Consumer<TikTokShareEvent> event);
77+
T onShare(TikTokEventConsumer<TikTokShareEvent> event);
7978

80-
T onUnhandledMember(Consumer<TikTokUnhandledMemberEvent> event);
79+
T onUnhandledMember(TikTokEventConsumer<TikTokUnhandledMemberEvent> event);
8180

82-
T onSubNotify(Consumer<TikTokSubNotifyEvent> event);
81+
T onSubNotify(TikTokEventConsumer<TikTokSubNotifyEvent> event);
8382

84-
T onLinkMicBattle(Consumer<TikTokLinkMicBattleEvent> event);
83+
T onLinkMicBattle(TikTokEventConsumer<TikTokLinkMicBattleEvent> event);
8584

86-
T onDisconnected(Consumer<TikTokDisconnectedEvent> event);
85+
T onDisconnected(TikTokEventConsumer<TikTokDisconnectedEvent> event);
8786

88-
T onGiftBroadcast(Consumer<TikTokGiftBroadcastEvent> event);
87+
T onGiftBroadcast(TikTokEventConsumer<TikTokGiftBroadcastEvent> event);
8988

90-
T onUnhandledControl(Consumer<TikTokUnhandledControlEvent> event);
89+
T onUnhandledControl(TikTokEventConsumer<TikTokUnhandledControlEvent> event);
9190

92-
T onEvent(Consumer<TikTokEvent> event);
91+
T onEvent(TikTokEventConsumer<TikTokEvent> event);
9392
}
9493

9594

API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokLiveEvent.java renamed to API/src/main/java/io/github/jwdeveloper/tiktok/events/TikTokEventConsumer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
import io.github.jwdeveloper.tiktok.live.LiveClient;
44

5-
public interface TikTokLiveEvent<T extends TikTokEvent>
5+
public interface TikTokEventConsumer<T extends TikTokEvent>
66
{
77
void onEvent(LiveClient liveClient, T event);
88
}

API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokGiftMessageEvent.java

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -3,38 +3,39 @@
33
import io.github.jwdeveloper.tiktok.annotations.Nullable;
44
import io.github.jwdeveloper.tiktok.events.TikTokEvent;
55
import io.github.jwdeveloper.tiktok.events.objects.Gift;
6+
import io.github.jwdeveloper.tiktok.events.objects.TikTokGift;
67
import io.github.jwdeveloper.tiktok.events.objects.User;
78
import io.github.jwdeveloper.tiktok.messages.WebcastGiftMessage;
89
import lombok.Getter;
910

1011
@Getter
1112
public class TikTokGiftMessageEvent extends TikTokEvent {
12-
private final Gift gift;
1313

14-
@Nullable
15-
private User sender;
14+
private final Gift gift;
1615

17-
private final String purchaseId;
16+
@Nullable
17+
private User sender;
1818

19-
private final String receipt;
19+
private final String purchaseId;
2020

21-
private final Integer amount;
21+
private final String receipt;
2222

23-
private final Boolean streakFinished;
23+
private final Integer amount;
2424

25-
private final Integer streakIndex;
25+
private final Boolean streakFinished;
2626

27-
public TikTokGiftMessageEvent(WebcastGiftMessage msg) {
28-
super(msg.getHeader());;
29-
gift = new Gift(msg.getGiftDetails());
30-
if(msg.hasSender())
31-
{
32-
sender = new User(msg.getSender());
27+
private final Integer streakIndex;
28+
29+
public TikTokGiftMessageEvent(WebcastGiftMessage msg) {
30+
super(msg.getHeader());
31+
gift = new Gift(msg.getGiftDetails());
32+
if (msg.hasSender()) {
33+
sender = new User(msg.getSender());
34+
}
35+
purchaseId = msg.getLogId();
36+
receipt = msg.getReceiptJson();
37+
amount = msg.getAmount();
38+
streakFinished = msg.getRepeatEnd();
39+
streakIndex = msg.getRepeatCount();
3340
}
34-
purchaseId = msg.getLogId();
35-
receipt = msg.getReceiptJson();
36-
amount = msg.getAmount();
37-
streakFinished = msg.getRepeatEnd();
38-
streakIndex = msg.getRepeatCount();
39-
}
4041
}

API/src/main/java/io/github/jwdeveloper/tiktok/events/messages/TikTokRankUpdateEvent.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,30 @@ public TikTokRankUpdateEvent(WebcastHourlyRankMessage msg) {
2020
var rankData = msg.getData().getRankings();
2121
eventType = rankData.getType();
2222
label = rankData.getLabel();
23-
rank = rankData.getDetails(0).getLabel();
23+
if(rankData.getDetailsList().isEmpty())
24+
{
25+
rank = "";
26+
}
27+
else
28+
{
29+
rank = rankData.getDetails(0).getLabel();
30+
}
2431
color = rankData.getColor().getColor();
25-
26-
2732
}
2833

2934
public TikTokRankUpdateEvent(WebcastRankUpdateMessage msg) {
3035
super(msg.getHeader());
3136
var rankData = msg.getData().getRankData();
3237
eventType = rankData.getType();
3338
label = rankData.getLabel();
34-
rank = rankData.getDetails(0).getLabel();
39+
if(rankData.getDetailsList().isEmpty())
40+
{
41+
rank = "";
42+
}
43+
else
44+
{
45+
rank = rankData.getDetails(0).getLabel();
46+
}
3547
color = rankData.getColor().getColor();
3648
}
3749

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package io.github.jwdeveloper.tiktok.exceptions;
2+
3+
import io.github.jwdeveloper.tiktok.messages.WebcastResponse;
4+
import lombok.Getter;
5+
6+
import java.util.Base64;
7+
8+
public class TikTokLiveMessageException extends TikTokLiveException {
9+
10+
@Getter
11+
private final WebcastResponse.Message webcastMessage;
12+
@Getter
13+
private final WebcastResponse webcastResponse;
14+
15+
16+
public TikTokLiveMessageException(WebcastResponse.Message message,
17+
WebcastResponse webcastResponse,
18+
Throwable cause) {
19+
super("Error while handling Message: " + message.getType() + ": \n", cause);
20+
this.webcastMessage = message;
21+
this.webcastResponse = webcastResponse;
22+
}
23+
24+
public void messageToBase64()
25+
{
26+
var decoded = Base64.getEncoder().encodeToString(webcastMessage.getBinary().toByteArray());
27+
}
28+
29+
public void webcastResponseToBase64()
30+
{
31+
var decoded = Base64.getEncoder().encodeToString(webcastResponse.toByteArray());
32+
}
33+
}

API/src/main/java/io/github/jwdeveloper/tiktok/exceptions/TikTokLiveMessageParsingException.java

Lines changed: 0 additions & 23 deletions
This file was deleted.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package io.github.jwdeveloper.tiktok.exceptions;
2+
3+
public class TikTokLiveOfflineHostException extends TikTokLiveException
4+
{
5+
public TikTokLiveOfflineHostException(String message) {
6+
super(message);
7+
}
8+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package io.github.jwdeveloper.tiktok.exceptions;
2+
3+
4+
public class TikTokMessageMappingException extends TikTokLiveException
5+
{
6+
public TikTokMessageMappingException(Class<?> inputClazz, Class<?> outputClass, Throwable throwable)
7+
{
8+
super("Unable to handle mapping from class: " + inputClazz.getSimpleName() + " to class " + outputClass.getSimpleName(),throwable);
9+
}
10+
11+
public TikTokMessageMappingException(Class<?> inputClazz, Class<?> outputClass, String message)
12+
{
13+
super("Unable to handle mapping from class: " + inputClazz.getSimpleName() + " to class " + outputClass.getSimpleName()+": "+message);
14+
}
15+
}

0 commit comments

Comments
 (0)