@@ -149,32 +149,32 @@ public void run() {
149149
150150 JSONObject eventSubObject = new JSONObject (BrowserClient .requestToString (bd .getResponse ()));
151151
152- if (hasEventHandler (eventSubObject , "channel.prediction.begin" ,
153- userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL )) {
152+ if (! hasEventHandler (eventSubObject , "channel.prediction.begin" ,
153+ userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL , headers )) {
154154 registerEventSub ("channel.prediction.begin" , userObject .getString ("id" ),
155155 exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ),
156156 TwitchOverlayServer .INSTANCE .getAppAccessTokenHandle ().getAccessToken (),
157157 overlaySubBaseURL , 1 );
158158 }
159159
160- if (hasEventHandler (eventSubObject , "channel.prediction.progress" ,
161- userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL )) {
160+ if (! hasEventHandler (eventSubObject , "channel.prediction.progress" ,
161+ userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL , headers )) {
162162 registerEventSub ("channel.prediction.progress" , userObject .getString ("id" ),
163163 exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ),
164164 TwitchOverlayServer .INSTANCE .getAppAccessTokenHandle ().getAccessToken (),
165165 overlaySubBaseURL , 1 );
166166 }
167167
168- if (hasEventHandler (eventSubObject , "channel.prediction.lock" ,
169- userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL )) {
168+ if (! hasEventHandler (eventSubObject , "channel.prediction.lock" ,
169+ userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL , headers )) {
170170 registerEventSub ("channel.prediction.lock" , userObject .getString ("id" ),
171171 exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ),
172172 TwitchOverlayServer .INSTANCE .getAppAccessTokenHandle ().getAccessToken (),
173173 overlaySubBaseURL , 1 );
174174 }
175175
176- if (hasEventHandler (eventSubObject , "channel.prediction.end" ,
177- userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL )) {
176+ if (! hasEventHandler (eventSubObject , "channel.prediction.end" ,
177+ userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL , headers )) {
178178 registerEventSub ("channel.prediction.end" , userObject .getString ("id" ),
179179 exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ),
180180 TwitchOverlayServer .INSTANCE .getAppAccessTokenHandle ().getAccessToken (),
@@ -188,24 +188,24 @@ public void run() {
188188
189189 JSONObject eventSubObject = new JSONObject (BrowserClient .requestToString (bd .getResponse ()));
190190
191- if (hasEventHandler (eventSubObject , "channel.poll.begin" ,
192- userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL )) {
191+ if (! hasEventHandler (eventSubObject , "channel.poll.begin" ,
192+ userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL , headers )) {
193193 registerEventSub ("channel.poll.begin" , userObject .getString ("id" ),
194194 exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ),
195195 TwitchOverlayServer .INSTANCE .getAppAccessTokenHandle ().getAccessToken (),
196196 overlaySubBaseURL , 1 );
197197 }
198198
199- if (hasEventHandler (eventSubObject , "channel.poll.progress" ,
200- userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL )) {
199+ if (! hasEventHandler (eventSubObject , "channel.poll.progress" ,
200+ userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL , headers )) {
201201 registerEventSub ("channel.poll.progress" , userObject .getString ("id" ),
202202 exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ),
203203 TwitchOverlayServer .INSTANCE .getAppAccessTokenHandle ().getAccessToken (),
204204 overlaySubBaseURL , 1 );
205205 }
206206
207- if (hasEventHandler (eventSubObject , "channel.poll.end" ,
208- userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL )) {
207+ if (! hasEventHandler (eventSubObject , "channel.poll.end" ,
208+ userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL , headers )) {
209209 registerEventSub ("channel.poll.end" , userObject .getString ("id" ),
210210 exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ),
211211 TwitchOverlayServer .INSTANCE .getAppAccessTokenHandle ().getAccessToken (),
@@ -219,48 +219,48 @@ public void run() {
219219
220220 JSONObject eventSubObject = new JSONObject (BrowserClient .requestToString (bd .getResponse ()));
221221
222- if (hasEventHandler (eventSubObject , "channel.follow" ,
223- userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL )) {
222+ if (! hasEventHandler (eventSubObject , "channel.follow" ,
223+ userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL , headers )) {
224224 registerEventSub ("channel.follow" , userObject .getString ("id" ),
225225 exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ),
226226 TwitchOverlayServer .INSTANCE .getAppAccessTokenHandle ().getAccessToken (),
227227 overlaySubBaseURL , 2 );
228228 }
229229
230- if (hasEventHandler (eventSubObject , "channel.subscribe" ,
231- userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL )) {
230+ if (! hasEventHandler (eventSubObject , "channel.subscribe" ,
231+ userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL , headers )) {
232232 registerEventSub ("channel.subscribe" , userObject .getString ("id" ),
233233 exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ),
234234 TwitchOverlayServer .INSTANCE .getAppAccessTokenHandle ().getAccessToken (),
235235 overlaySubBaseURL , 1 );
236236 }
237237
238- if (hasEventHandler (eventSubObject , "channel.subscription.gift" ,
239- userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL )) {
238+ if (! hasEventHandler (eventSubObject , "channel.subscription.gift" ,
239+ userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL , headers )) {
240240 registerEventSub ("channel.subscription.gift" , userObject .getString ("id" ),
241241 exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ),
242242 TwitchOverlayServer .INSTANCE .getAppAccessTokenHandle ().getAccessToken (),
243243 overlaySubBaseURL , 1 );
244244 }
245245
246- if (hasEventHandler (eventSubObject , "channel.subscription.message" ,
247- userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL )) {
246+ if (! hasEventHandler (eventSubObject , "channel.subscription.message" ,
247+ userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL , headers )) {
248248 registerEventSub ("channel.subscription.message" , userObject .getString ("id" ),
249249 exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ),
250250 TwitchOverlayServer .INSTANCE .getAppAccessTokenHandle ().getAccessToken (),
251251 overlaySubBaseURL , 1 );
252252 }
253253
254- if (hasEventHandler (eventSubObject , "channel.cheer" ,
255- userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL )) {
254+ if (! hasEventHandler (eventSubObject , "channel.cheer" ,
255+ userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL , headers )) {
256256 registerEventSub ("channel.cheer" , userObject .getString ("id" ),
257257 exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ),
258258 TwitchOverlayServer .INSTANCE .getAppAccessTokenHandle ().getAccessToken (),
259259 overlaySubBaseURL , 1 );
260260 }
261261
262- if (hasEventHandler (eventSubObject , "channel.raid" ,
263- userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL )) {
262+ if (! hasEventHandler (eventSubObject , "channel.raid" ,
263+ userObject .getString ("id" ), exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ), overlaySubBaseURL , headers )) {
264264 registerEventSub ("channel.raid" , userObject .getString ("id" ),
265265 exchange .getRequestHeaders ().get ("User-Agent" ).get (0 ),
266266 TwitchOverlayServer .INSTANCE .getAppAccessTokenHandle ().getAccessToken (),
@@ -287,10 +287,9 @@ public void run() {
287287 }
288288 }
289289
290- public boolean hasEventHandler (JSONObject eventSubObject , String subType , String userId , String userAgent , String overlaySubBaseURL ) throws IOException {
290+ public boolean hasEventHandler (JSONObject eventSubObject , String subType , String userId , String userAgent , String overlaySubBaseURL , Map < String , String > headers ) throws IOException {
291291 for (int i = 0 ; i < eventSubObject .getJSONArray ("data" ).length (); i ++) {
292292 JSONObject eventSubObj = eventSubObject .getJSONArray ("data" ).getJSONObject (i );
293-
294293 if (eventSubObj .getString ("type" ).equals (subType )) {
295294 if (eventSubObj .getJSONObject ("transport" ).getString ("method" ).equals ("webhook" ) &&
296295 eventSubObj .getJSONObject ("transport" ).getString ("callback" )
@@ -302,14 +301,23 @@ public boolean hasEventHandler(JSONObject eventSubObject, String subType, String
302301 eventSubObj .getJSONObject ("transport" ).getString ("callback" )
303302 .equals (TwitchOverlayServer .INSTANCE .getConfig ().getOverlayBaseURL ()
304303 + "/webhook" + overlaySubBaseURL + "/" + userId ) &&
305- eventSubObj .getString ("status" ).equals ("enabled" )) {
304+ ! eventSubObj .getString ("status" ).equals ("enabled" )) {
306305 deleteEventSub (eventSubObject .getString ("id" ), userAgent , overlaySubBaseURL );
307306
308307 return false ;
309308 }
310309 }
311310 }
312311
312+ if (eventSubObject .getJSONObject ("pagination" ).has ("cursor" )) {
313+ BrowserData bd = BrowserClient .executeGETRequest (new URL (
314+ "https://api.twitch.tv/helix/eventsub/subscriptions?after=" + eventSubObject .getJSONObject ("pagination" ).getString ("cursor" )), headers );
315+
316+ eventSubObject = new JSONObject (BrowserClient .requestToString (bd .getResponse ()));
317+
318+ return hasEventHandler (eventSubObject , subType , userId , userAgent , overlaySubBaseURL , headers );
319+ }
320+
313321 return false ;
314322 }
315323
@@ -322,8 +330,8 @@ public void registerEventSub(String subType, String userId, String userAgent, St
322330 headers .put ("Content-Type" , "application/json" );
323331
324332 JSONObject payload = new JSONObject ().put ("type" , subType ).put ("version" , String .valueOf (version )).put ("transport" , new JSONObject ().put ("method" , "webhook" )
325- .put ("callback" , TwitchOverlayServer .INSTANCE .getConfig ().getOverlayBaseURL () + "/webhook"
326- + overlaySubBaseURL + "/" + userId ).put ("secret" ,
333+ .put ("callback" , TwitchOverlayServer .INSTANCE .getConfig ().getOverlayBaseURL () + "/webhook"
334+ + overlaySubBaseURL + "/" + userId ).put ("secret" ,
327335 TwitchOverlayServer .INSTANCE .getConfig ().getWebhookSecret ()));
328336
329337 JSONObject condition = new JSONObject ();
0 commit comments