Skip to content

Commit 15f4d36

Browse files
committed
Fix TokenHandler not checking EventHandler properly
1 parent 9560a83 commit 15f4d36

1 file changed

Lines changed: 39 additions & 31 deletions

File tree

src/me/Logicism/TwitchOverlayServer/http/handlers/TokenHandler.java

Lines changed: 39 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)