Skip to content

Commit

Permalink
feat: add unofficial chatrooms user pubsub topic (#515)
Browse files Browse the repository at this point in the history
  • Loading branch information
iProdigy committed Jan 24, 2022
1 parent c81b6a2 commit 7500fe6
Show file tree
Hide file tree
Showing 7 changed files with 96 additions and 1 deletion.
Expand Up @@ -406,7 +406,6 @@ default PubSubSubscription listenForChannelChatroomEvents(OAuth2Credential crede
}

@Unofficial
@Deprecated
default PubSubSubscription listenForUserChatroomEvents(OAuth2Credential credential, String userId) {
return listenOnTopic(PubSubType.LISTEN, credential, "chatrooms-user-v1." + userId);
}
Expand Down
17 changes: 17 additions & 0 deletions pubsub/src/main/java/com/github/twitch4j/pubsub/TwitchPubSub.java
Expand Up @@ -535,6 +535,23 @@ public void onTextMessage(WebSocket ws, String text) {
eventManager.publish(new ChatModerationEvent(lastTopicIdentifier, action));
break;

default:
log.warn("Unparsable Message: " + message.getType() + "|" + message.getData());
break;
}
} else if ("chatrooms-user-v1".equals(topicName) && topicParts.length > 1) {
final String userId = topicParts[1];
switch (type) {
case "channel_banned_alias_restriction_update":
final AliasRestrictionUpdateData aliasData = TypeConvert.convertValue(msgData, AliasRestrictionUpdateData.class);
eventManager.publish(new AliasRestrictionUpdateEvent(userId, aliasData));
break;

case "user_moderation_action":
final UserModerationActionData actionData = TypeConvert.convertValue(msgData, UserModerationActionData.class);
eventManager.publish(new UserModerationActionEvent(userId, actionData));
break;

default:
log.warn("Unparsable Message: " + message.getType() + "|" + message.getData());
break;
Expand Down
@@ -0,0 +1,23 @@
package com.github.twitch4j.pubsub.domain;

import com.fasterxml.jackson.annotation.JsonAlias;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.github.twitch4j.common.annotation.Unofficial;
import lombok.AccessLevel;
import lombok.Data;
import lombok.Setter;
import lombok.experimental.Accessors;

@Data
@Setter(AccessLevel.PRIVATE)
@Unofficial
public class AliasRestrictionUpdateData {

@Accessors(fluent = true)
@JsonProperty("user_is_restricted")
private Boolean isRestricted;

@JsonAlias("ChannelID")
private String channelId;

}
@@ -0,0 +1,25 @@
package com.github.twitch4j.pubsub.domain;

import com.github.twitch4j.common.annotation.Unofficial;
import lombok.AccessLevel;
import lombok.Data;
import lombok.Setter;

@Data
@Setter(AccessLevel.PRIVATE)
@Unofficial
public class UserModerationActionData {

private String action;
private String targetId;
private String channelId;

public boolean isBan() {
return "ban".equals(action);
}

public boolean isUnban() {
return "unban".equals(action);
}

}
Expand Up @@ -31,6 +31,11 @@ public class VideoPlaybackData {
*/
private Integer length;

/**
* Sent when {@link #getType()} is {@link Type#COMMERCIAL}.
*/
private Boolean scheduled;

@RequiredArgsConstructor
public enum Type {
COMMERCIAL("commercial"),
Expand Down
@@ -0,0 +1,13 @@
package com.github.twitch4j.pubsub.events;

import com.github.twitch4j.common.events.TwitchEvent;
import com.github.twitch4j.pubsub.domain.AliasRestrictionUpdateData;
import lombok.EqualsAndHashCode;
import lombok.Value;

@Value
@EqualsAndHashCode(callSuper = false)
public class AliasRestrictionUpdateEvent extends TwitchEvent {
String userId;
AliasRestrictionUpdateData data;
}
@@ -0,0 +1,13 @@
package com.github.twitch4j.pubsub.events;

import com.github.twitch4j.common.events.TwitchEvent;
import com.github.twitch4j.pubsub.domain.UserModerationActionData;
import lombok.EqualsAndHashCode;
import lombok.Value;

@Value
@EqualsAndHashCode(callSuper = false)
public class UserModerationActionEvent extends TwitchEvent {
String userId;
UserModerationActionData data;
}

0 comments on commit 7500fe6

Please sign in to comment.