diff --git a/src/main/java/com/botdetector/http/BotDetectorClient.java b/src/main/java/com/botdetector/http/BotDetectorClient.java index ed00e175..c775e989 100644 --- a/src/main/java/com/botdetector/http/BotDetectorClient.java +++ b/src/main/java/com/botdetector/http/BotDetectorClient.java @@ -91,13 +91,12 @@ public class BotDetectorClient @AllArgsConstructor private enum ApiPath { - DETECTION("v1/report"), - PLAYER_STATS_PASSIVE("v1/report/count"), - PLAYER_STATS_MANUAL("v1/report/manual/count"), - PLAYER_STATS_FEEDBACK("v1/feedback/count"), - PREDICTION("v1/prediction"), - FEEDBACK("v1/feedback/"), - VERIFY_DISCORD("site/discord_user/") + DETECTION("v2/report"), + PLAYER_STATS_REPORTS("v2/player/report/score"), + PLAYER_STATS_FEEDBACK("v2/player/feedback/score"), + PREDICTION("v2/player/prediction"), + FEEDBACK("v1/feedback/"), // Remove last forward slash when using v2! + VERIFY_DISCORD("site/discord_user") ; final String path; @@ -398,7 +397,15 @@ public void onResponse(Call call, Response response) { try { - future.complete(processResponse(gson, response, Prediction.class)); + Collection preds = processResponse(gson, response, new TypeToken>() + { + }.getType()); + if (preds != null) + { + future.complete(preds.stream().findFirst().orElse(null)); + return; + } + future.complete(null); } catch (IOException e) { @@ -422,18 +429,8 @@ public void onResponse(Call call, Response response) */ public CompletableFuture> requestPlayerStats(String playerName) { - Gson bdGson = gson.newBuilder() - .registerTypeAdapter(boolean.class, new BooleanToZeroOneConverter()) - .create(); - - Request requestP = new Request.Builder() - .url(getUrl(ApiPath.PLAYER_STATS_PASSIVE).newBuilder() - .addQueryParameter("name", playerName) - .build()) - .build(); - - Request requestM = new Request.Builder() - .url(getUrl(ApiPath.PLAYER_STATS_MANUAL).newBuilder() + Request requestR = new Request.Builder() + .url(getUrl(ApiPath.PLAYER_STATS_REPORTS).newBuilder() .addQueryParameter("name", playerName) .build()) .build(); @@ -444,18 +441,16 @@ public CompletableFuture> requestPlayerStats(S .build()) .build(); - CompletableFuture> passiveFuture = new CompletableFuture<>(); - CompletableFuture> manualFuture = new CompletableFuture<>(); + CompletableFuture> reportsFuture = new CompletableFuture<>(); CompletableFuture> feedbackFuture = new CompletableFuture<>(); - okHttpClient.newCall(requestP).enqueue(new PlayerStatsCallback(passiveFuture, bdGson)); - okHttpClient.newCall(requestM).enqueue(new PlayerStatsCallback(manualFuture, bdGson)); - okHttpClient.newCall(requestF).enqueue(new PlayerStatsCallback(feedbackFuture, bdGson)); + okHttpClient.newCall(requestR).enqueue(new PlayerStatsCallback(reportsFuture, gson)); + okHttpClient.newCall(requestF).enqueue(new PlayerStatsCallback(feedbackFuture, gson)); CompletableFuture> finalFuture = new CompletableFuture<>(); - // Doing this so we log only the first future failing, not all 3 within the callback. - CompletableFuture.allOf(passiveFuture, manualFuture, feedbackFuture).whenComplete((v, e) -> + // Doing this so we log only the first future failing, not all 2 within the callback. + CompletableFuture.allOf(reportsFuture, feedbackFuture).whenComplete((v, e) -> { if (e != null) { @@ -465,8 +460,7 @@ public CompletableFuture> requestPlayerStats(S } else { - finalFuture.complete(processPlayerStats( - passiveFuture.join(), manualFuture.join(), feedbackFuture.join())); + finalFuture.complete(processPlayerStats(reportsFuture.join(), feedbackFuture.join())); } }); @@ -592,20 +586,21 @@ private IOException getIOException(Response response) /** * Collects the given {@link PlayerStatsAPIItem} into a combined map that the plugin expects. - * @param passive The passive usage stats from the API. - * @param manual The manual flagging stats from the API. + * @param reports The reports usage stats from the API. * @param feedback The feedback stats from the API. * @return The combined processed map expected by the plugin. */ - private Map processPlayerStats(Collection passive, Collection manual, Collection feedback) + private Map processPlayerStats(Collection reports, Collection feedback) { - if (passive == null || manual == null || feedback == null) + if (reports == null || feedback == null) { return null; } - PlayerStats passiveStats = countStats(passive, false); - PlayerStats manualStats = countStats(manual, true); + PlayerStats passiveStats = countStats(reports.stream().filter( + r -> r.getManual() != null && !r.getManual()).collect(Collectors.toList()), false); + PlayerStats manualStats = countStats(reports.stream().filter( + r -> r.getManual() != null && r.getManual()).collect(Collectors.toList()), true); PlayerStats feedbackStats = countStats(feedback, false); PlayerStats totalStats = PlayerStats.builder() @@ -623,7 +618,7 @@ private Map processPlayerStats(Collection