From 3346af7a9c910eda85708853187a54f32f11bfd6 Mon Sep 17 00:00:00 2001 From: Sidd Date: Tue, 17 May 2022 23:38:42 -0700 Subject: [PATCH] feat: add eventsub fields from may 2022 update --- build.gradle.kts | 2 +- .../twitch4j/eventsub/events/ChannelBanEvent.java | 5 +++++ .../twitch4j/eventsub/events/HypeTrainEndEvent.java | 5 ----- .../twitch4j/eventsub/events/HypeTrainEvent.java | 5 +++++ .../eventsub/events/HypeTrainProgressEvent.java | 5 ----- .../twitch4j/eventsub/events/UserUpdateEvent.java | 12 ++++++++++++ .../twitch4j/eventsub/events/EventSubEventTest.java | 6 ++++-- 7 files changed, 27 insertions(+), 13 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 930b06e27..30666be99 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -24,7 +24,7 @@ allprojects { this as StandardJavadocDocletOptions links( "https://javadoc.io/doc/org.jetbrains/annotations/latest", - "https://javadoc.io/doc/com.github.ben-manes.caffeine/caffeine/2.9.2", + "https://javadoc.io/doc/com.github.ben-manes.caffeine/caffeine/2.9.3", "https://commons.apache.org/proper/commons-configuration/javadocs/v1.10/apidocs", "https://javadoc.io/doc/com.github.vladimir-bukhtoyarov/bucket4j-core/7.5.0/", "https://square.github.io/okhttp/4.x/okhttp/", diff --git a/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/ChannelBanEvent.java b/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/ChannelBanEvent.java index 9287df8fa..0c3603e66 100644 --- a/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/ChannelBanEvent.java +++ b/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/ChannelBanEvent.java @@ -24,6 +24,11 @@ public class ChannelBanEvent extends EventSubModerationEvent { */ private String reason; + /** + * The UTC date and time (in RFC3339 format) of when the user was banned or put in a timeout. + */ + private Instant bannedAt; + /** * Will be null if permanent ban. If it is a timeout, this field shows when the timeout will end. */ diff --git a/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/HypeTrainEndEvent.java b/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/HypeTrainEndEvent.java index 8ae6a56c4..d56e9717c 100644 --- a/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/HypeTrainEndEvent.java +++ b/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/HypeTrainEndEvent.java @@ -16,11 +16,6 @@ @EqualsAndHashCode(callSuper = true) public class HypeTrainEndEvent extends HypeTrainEvent { - /** - * Current level of hype train event. - */ - private Integer level; - /** * The timestamp at which the hype train ended. */ diff --git a/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/HypeTrainEvent.java b/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/HypeTrainEvent.java index 5ccb1185b..c7dde937a 100644 --- a/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/HypeTrainEvent.java +++ b/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/HypeTrainEvent.java @@ -28,6 +28,11 @@ public abstract class HypeTrainEvent extends EventSubChannelEvent { */ private List topContributions; + /** + * Current level of hype train event. + */ + private Integer level; + /** * The timestamp at which the hype train started. */ diff --git a/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/HypeTrainProgressEvent.java b/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/HypeTrainProgressEvent.java index 6b0183ad3..c776fa439 100644 --- a/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/HypeTrainProgressEvent.java +++ b/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/HypeTrainProgressEvent.java @@ -17,11 +17,6 @@ @EqualsAndHashCode(callSuper = true) public class HypeTrainProgressEvent extends HypeTrainEvent { - /** - * Current level of hype train event. - */ - private Integer level; - /** * The number of points contributed to the hype train at the current level. */ diff --git a/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/UserUpdateEvent.java b/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/UserUpdateEvent.java index df0d3d4ba..e5f3e8a53 100644 --- a/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/UserUpdateEvent.java +++ b/eventsub-common/src/main/java/com/github/twitch4j/eventsub/events/UserUpdateEvent.java @@ -1,11 +1,13 @@ package com.github.twitch4j.eventsub.events; +import com.fasterxml.jackson.annotation.JsonProperty; import lombok.AccessLevel; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.Setter; import lombok.ToString; +import lombok.experimental.Accessors; @Data @Setter(AccessLevel.PRIVATE) @@ -20,6 +22,16 @@ public class UserUpdateEvent extends EventSubUserEvent { */ private String email; + /** + * A Boolean value that determines whether Twitch has verified the user’s email address. + * Is true if Twitch has verified the email address; otherwise, false. + *

+ * Note from Twitch: Ignore this field if the email field contains an empty string. + */ + @Accessors(fluent = true) + @JsonProperty("email_verified") + private Boolean isEmailVerified; + /** * The user’s description. */ diff --git a/eventsub-common/src/test/java/com/github/twitch4j/eventsub/events/EventSubEventTest.java b/eventsub-common/src/test/java/com/github/twitch4j/eventsub/events/EventSubEventTest.java index 5c58e8d83..bcb1f6bc9 100644 --- a/eventsub-common/src/test/java/com/github/twitch4j/eventsub/events/EventSubEventTest.java +++ b/eventsub-common/src/test/java/com/github/twitch4j/eventsub/events/EventSubEventTest.java @@ -29,7 +29,7 @@ public class EventSubEventTest { public void deserializeModerationEvent() { ChannelBanEvent event = jsonToObject( "{\"user_id\":\"1234\",\"user_login\":\"cool_user\",\"user_name\":\"Cool_User\",\"broadcaster_user_id\":\"1337\",\"broadcaster_user_login\":\"cooler_user\",\"broadcaster_user_name\":\"Cooler_User\",\"moderator_user_id\":\"1339\"," + - "\"moderator_user_login\":\"mod_user\",\"moderator_user_name\":\"Mod_User\",\"reason\":\"Offensive language\",\"ends_at\":\"2020-07-15T18:16:11.17106713Z\",\"is_permanent\":false}", + "\"moderator_user_login\":\"mod_user\",\"moderator_user_name\":\"Mod_User\",\"reason\":\"Offensive language\",\"banned_at\":\"2020-07-15T18:15:11.17106713Z\",\"ends_at\":\"2020-07-15T18:16:11.17106713Z\",\"is_permanent\":false}", ChannelBanEvent.class ); @@ -46,6 +46,7 @@ public void deserializeModerationEvent() { assertEquals("Mod_User", event.getModeratorUserName()); assertEquals("Offensive language", event.getReason()); + assertEquals(Instant.parse("2020-07-15T18:15:11.17106713Z"), event.getBannedAt()); assertEquals(Instant.parse("2020-07-15T18:16:11.17106713Z"), event.getEndsAt()); assertFalse(event.isPermanent()); } @@ -377,13 +378,14 @@ public void deserializeComplexHypeTrainEvent() { @DisplayName("Deserialize UserUpdateEvent") public void deserializeComplexUserEvent() { UserUpdateEvent event = jsonToObject( - "{\"user_id\":\"1337\",\"user_name\":\"cool_user\",\"email\":\"user@email.com\",\"description\":\"cool description\"}", + "{\"user_id\":\"1337\",\"user_name\":\"cool_user\",\"email\":\"user@email.com\",\"email_verified\":true,\"description\":\"cool description\"}", UserUpdateEvent.class ); assertEquals("1337", event.getUserId()); assertEquals("cool_user", event.getUserName()); assertEquals("user@email.com", event.getEmail()); + assertTrue(event.isEmailVerified()); assertEquals("cool description", event.getDescription()); }