Skip to content

Commit cd9e9ea

Browse files
authored
Merge pull request #34 from jwdeveloper/develop-1-0-10
Develop 1 0 10
2 parents 385560d + 5a2d2d2 commit cd9e9ea

File tree

95 files changed

+3173
-1626
lines changed

Some content is hidden

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

95 files changed

+3173
-1626
lines changed

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,15 +56,15 @@ public class ClientSettings {
5656
* Whether to print Logs to Console
5757
*/
5858

59-
private boolean printToConsole;
59+
private boolean printToConsole = true;
6060
/**
6161
* LoggingLevel for Logs
6262
*/
6363
private Level logLevel;
6464

6565

6666
/**
67-
* Optional: Use it if you need to change TikTok live hostname in builder
67+
* Optional: Use it if you need to change TikTok live hostname in builder
6868
*/
6969
private String hostName;
7070

API/src/main/java/io/github/jwdeveloper/tiktok/annotations/TikTokEventHandler.java renamed to API/src/main/java/io/github/jwdeveloper/tiktok/annotations/TikTokEventObserver.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import java.lang.annotation.RetentionPolicy;
2727

2828
@Retention(RetentionPolicy.RUNTIME)
29-
public @interface TikTokEventHandler
29+
public @interface TikTokEventObserver
3030
{
3131

3232
}

API/src/main/java/io/github/jwdeveloper/tiktok/data/events/TikTokCommentEvent.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,11 @@ public class TikTokCommentEvent extends TikTokHeaderEvent {
4747

4848
public TikTokCommentEvent(WebcastChatMessage msg) {
4949
super(msg.getCommon());
50-
user = User.map(msg.getUser());
50+
user = User.map(msg.getUser(),msg.getUserIdentity());
5151
text = msg.getContent();
5252
visibleToSender = msg.getVisibleToSender();
5353
getUserLanguage = msg.getContentLanguage();
54-
mentionedUser = User.map(msg.getAtUser(),msg.getUserIdentity());
54+
mentionedUser = User.map(msg.getAtUser());
5555
pictures = msg.getEmotesListList().stream().map(e -> Picture.map(e.getEmote().getImage())).toList();
5656
}
5757
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package io.github.jwdeveloper.tiktok.data.events.http;
2+
3+
import io.github.jwdeveloper.tiktok.annotations.EventMeta;
4+
import io.github.jwdeveloper.tiktok.annotations.EventType;
5+
import io.github.jwdeveloper.tiktok.data.events.common.TikTokEvent;
6+
import io.github.jwdeveloper.tiktok.data.models.http.HttpData;
7+
import lombok.AllArgsConstructor;
8+
import lombok.Getter;
9+
10+
@Getter
11+
@AllArgsConstructor
12+
@EventMeta(eventType = EventType.Debug)
13+
public class TikTokHttpResponseEvent extends TikTokEvent
14+
{
15+
String url;
16+
17+
HttpData response;
18+
19+
HttpData request;
20+
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package io.github.jwdeveloper.tiktok.data.models.http;
2+
3+
import lombok.Data;
4+
5+
import java.net.URI;
6+
import java.net.http.HttpRequest;
7+
import java.net.http.HttpResponse;
8+
import java.util.*;
9+
10+
@Data
11+
public class HttpData {
12+
String url;
13+
String method;
14+
Map<String, List<String>> headers = new TreeMap<>();
15+
Map<String, String> parameters = new TreeMap<>();
16+
int status;
17+
String body = "";
18+
19+
20+
public static HttpData map(HttpRequest request) {
21+
var data = new HttpData();
22+
data.setUrl(request.uri().getPath());
23+
data.setMethod(request.method());
24+
data.setParameters(extractQueryParams(request.uri()));
25+
data.setStatus(200);
26+
if (request.bodyPublisher().isPresent()) {
27+
data.setBody(request.bodyPublisher().get().toString());
28+
}
29+
data.setHeaders(Collections.unmodifiableMap(request.headers().map()));
30+
return data;
31+
}
32+
33+
public static HttpData map(HttpResponse<String> response) {
34+
var data = new HttpData();
35+
data.setUrl(response.uri().getPath());
36+
data.setMethod(response.request().method());
37+
data.setParameters(extractQueryParams(response.uri()));
38+
data.setStatus(200);
39+
data.setBody(response.body());
40+
data.setHeaders(Collections.unmodifiableMap(response.headers().map()));
41+
return data;
42+
}
43+
44+
45+
private static Map<String, String> extractQueryParams(URI uri) {
46+
Map<String, String> params = new HashMap<>();
47+
String query = uri.getQuery();
48+
if (query != null && !query.isEmpty()) {
49+
for (String param : query.split("&")) {
50+
String[] keyValue = param.split("=");
51+
if (keyValue.length > 1) {
52+
params.put(keyValue[0], keyValue[1]);
53+
} else {
54+
params.put(keyValue[0], ""); // Empty value for parameter without explicit value
55+
}
56+
}
57+
}
58+
return params;
59+
}
60+
}

API/src/main/java/io/github/jwdeveloper/tiktok/live/LiveClient.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
*/
2323
package io.github.jwdeveloper.tiktok.live;
2424

25+
import io.github.jwdeveloper.tiktok.data.events.common.TikTokEvent;
2526
import io.github.jwdeveloper.tiktok.listener.ListenersManager;
2627
import io.github.jwdeveloper.tiktok.listener.TikTokEventListener;
2728

@@ -55,6 +56,11 @@ public interface LiveClient {
5556
void disconnect();
5657

5758

59+
/**
60+
* You to manually trigger event
61+
*/
62+
void publishEvent(TikTokEvent event);
63+
5864
/**
5965
* Get information about gifts
6066
*/

API/src/main/java/io/github/jwdeveloper/tiktok/live/builder/EventsBuilder.java

Lines changed: 107 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import io.github.jwdeveloper.tiktok.data.events.*;
2727
import io.github.jwdeveloper.tiktok.data.events.gift.TikTokGiftComboEvent;
2828
import io.github.jwdeveloper.tiktok.data.events.gift.TikTokGiftEvent;
29+
import io.github.jwdeveloper.tiktok.data.events.http.TikTokHttpResponseEvent;
2930
import io.github.jwdeveloper.tiktok.data.events.room.TikTokRoomInfoEvent;
3031
import io.github.jwdeveloper.tiktok.data.events.social.TikTokFollowEvent;
3132
import io.github.jwdeveloper.tiktok.data.events.social.TikTokJoinEvent;
@@ -39,61 +40,140 @@
3940
public interface EventsBuilder<T> {
4041

4142
/**
42-
* Method used to register own custom events
43-
* @param eventClazz event class
44-
* @param event action
43+
* Invoked whenever specified event is triggered
44+
*
45+
* @param eventClass event class
46+
* @param action action
4547
*/
46-
<E extends TikTokEvent> T onCustomEvent(Class<E> eventClazz, EventConsumer<E> event);
48+
<E extends TikTokEvent> T onEvent(Class<E> eventClass, EventConsumer<E> action);
4749

48-
T onRoomInfo(EventConsumer<TikTokRoomInfoEvent> event);
4950

50-
T onComment(EventConsumer<TikTokCommentEvent> event);
51+
/**
52+
* Invoked whenever any event is triggered
53+
*
54+
* @param action
55+
* @return
56+
*/
57+
T onEvent(EventConsumer<TikTokEvent> action);
58+
59+
/**
60+
* Invoked when information about room (live) got updated such as viewer count, etc..
61+
*
62+
* @param action
63+
* @return
64+
*/
65+
T onRoomInfo(EventConsumer<TikTokRoomInfoEvent> action);
66+
67+
/**
68+
* Invoked when someone send message to chat
69+
*
70+
* @param action
71+
* @return
72+
*/
73+
T onComment(EventConsumer<TikTokCommentEvent> action);
5174

52-
T onWebsocketMessage(EventConsumer<TikTokWebsocketMessageEvent> event);
5375

54-
T onWebsocketResponse(EventConsumer<TikTokWebsocketResponseEvent> event);
76+
/**
77+
* Invoked when TikTokLiveJava makes http request and getting response
78+
*
79+
* @param action
80+
* @return
81+
*/
82+
T onHttpResponse(EventConsumer<TikTokHttpResponseEvent> action);
83+
84+
/**
85+
* Invoked when TikTok protocolBuffer data "message" was successfully mapped to event
86+
* events contains protocol-buffer "Message" and TikTokLiveJava "Event"
87+
*
88+
* @param action
89+
* @return
90+
*/
91+
T onWebsocketMessage(EventConsumer<TikTokWebsocketMessageEvent> action);
5592

56-
T onWebsocketUnhandledMessage(EventConsumer<TikTokWebsocketUnhandledMessageEvent> event);
93+
/**
94+
* Invoked when there was not found event mapper for TikTok protocolBuffer data "message"
95+
*
96+
* @param action
97+
* @return
98+
*/
99+
T onWebsocketUnhandledMessage(EventConsumer<TikTokWebsocketUnhandledMessageEvent> action);
57100

101+
/**
102+
* Invoked every time TikTok sends protocolBuffer data to websocket
103+
* Response contains list of messages that are later mapped to events
104+
* @param action
105+
* @return
106+
*/
107+
T onWebsocketResponse(EventConsumer<TikTokWebsocketResponseEvent> action);
58108

59-
T onGiftCombo(EventConsumer<TikTokGiftComboEvent> event);
60109

61-
T onGift(EventConsumer<TikTokGiftEvent> event);
110+
/**
111+
* Invoked for gifts that has no combo, or when combo finishes
112+
* @param action
113+
* @return
114+
*/
115+
T onGift(EventConsumer<TikTokGiftEvent> action);
62116

63-
T onQuestion(EventConsumer<TikTokQuestionEvent> event);
117+
/**
118+
* Invoked for gifts that has combo options such as roses
119+
* @param action
120+
* @return
121+
*/
122+
T onGiftCombo(EventConsumer<TikTokGiftComboEvent> action);
64123

65-
T onSubscribe(EventConsumer<TikTokSubscribeEvent> event);
66124

67-
T onFollow(EventConsumer<TikTokFollowEvent> event);
125+
T onQuestion(EventConsumer<TikTokQuestionEvent> action);
68126

69-
T onLike(EventConsumer<TikTokLikeEvent> event);
127+
T onSubscribe(EventConsumer<TikTokSubscribeEvent> action);
70128

71-
T onEmote(EventConsumer<TikTokEmoteEvent> event);
129+
T onFollow(EventConsumer<TikTokFollowEvent> action);
72130

73-
T onJoin(EventConsumer<TikTokJoinEvent> event);
131+
T onLike(EventConsumer<TikTokLikeEvent> action);
74132

75-
T onShare(EventConsumer<TikTokShareEvent> event);
133+
T onEmote(EventConsumer<TikTokEmoteEvent> action);
76134

77-
// T onChest(EventConsumer<TikTokChestEvent> event);
135+
T onJoin(EventConsumer<TikTokJoinEvent> action);
78136

79-
T onLivePaused(EventConsumer<TikTokLivePausedEvent> event);
137+
T onShare(EventConsumer<TikTokShareEvent> action);
80138

81-
T onLiveUnpaused(EventConsumer<TikTokLiveUnpausedEvent> event);
139+
T onLivePaused(EventConsumer<TikTokLivePausedEvent> action);
82140

83-
T onLiveEnded(EventConsumer<TikTokLiveEndedEvent> event);
141+
T onLiveUnpaused(EventConsumer<TikTokLiveUnpausedEvent> action);
84142

85-
T onConnected(EventConsumer<TikTokConnectedEvent> event);
143+
T onLiveEnded(EventConsumer<TikTokLiveEndedEvent> action);
86144

87-
T onReconnecting(EventConsumer<TikTokReconnectingEvent> event);
145+
/**
146+
* Invoked when client has been successfully connected to live
147+
* @param action
148+
* @return
149+
*/
150+
T onConnected(EventConsumer<TikTokConnectedEvent> action);
88151

89-
T onDisconnected(EventConsumer<TikTokDisconnectedEvent> event);
152+
/**
153+
* Invoked when client tries to reconnect
154+
* @param action
155+
* @return
156+
*/
157+
T onReconnecting(EventConsumer<TikTokReconnectingEvent> action);
90158

91-
T onError(EventConsumer<TikTokErrorEvent> event);
159+
/**
160+
* Invoked when client disconnected
161+
* @param action
162+
* @return
163+
*/
164+
T onDisconnected(EventConsumer<TikTokDisconnectedEvent> action);
92165

93-
T onEvent(EventConsumer<TikTokEvent> event);
166+
/**
167+
* Invoked when exception was throed inside client or event handler
168+
* @param action
169+
* @return
170+
*/
171+
T onError(EventConsumer<TikTokErrorEvent> action);
94172

95173

96174
// TODO Figure out how those events works
175+
// T onChest(EventConsumer<TikTokChestEvent> event);
176+
97177
//T onLinkMicFanTicket(TikTokEventConsumer<TikTokLinkMicFanTicketEvent> event);
98178

99179
//T onEnvelope(TikTokEventConsumer<TikTokEnvelopeEvent> event);

0 commit comments

Comments
 (0)