diff --git a/src/main/java/eu/mhsl/craftattack/spawn/api/client/repositories/ReportRepository.java b/src/main/java/eu/mhsl/craftattack/spawn/api/client/repositories/ReportRepository.java index 7da116d..bd6aad9 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/api/client/repositories/ReportRepository.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/api/client/repositories/ReportRepository.java @@ -2,7 +2,6 @@ package eu.mhsl.craftattack.spawn.api.client.repositories; import eu.mhsl.craftattack.spawn.api.client.HttpRepository; import eu.mhsl.craftattack.spawn.api.client.ReqResp; -import eu.mhsl.craftattack.spawn.appliances.report.Report; import eu.mhsl.craftattack.spawn.util.api.ApiUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -31,6 +30,10 @@ public class ReportRepository extends HttpRepository { } public ReqResp<ReportsResponse> queryReports(UUID player) { - return this.get("reports", (builder) -> builder.addParameter("token", "asd"), input, SendReportResponse.class); + return this.get( + "report", + uriBuilder -> uriBuilder.addParameter("uuid", player.toString()), + ReportRepository.ReportsResponse.class + ); } } diff --git a/src/main/java/eu/mhsl/craftattack/spawn/appliances/report/Report.java b/src/main/java/eu/mhsl/craftattack/spawn/appliances/report/Report.java index c426c95..dc4cbe6 100644 --- a/src/main/java/eu/mhsl/craftattack/spawn/appliances/report/Report.java +++ b/src/main/java/eu/mhsl/craftattack/spawn/appliances/report/Report.java @@ -2,6 +2,8 @@ package eu.mhsl.craftattack.spawn.appliances.report; import com.google.gson.Gson; import eu.mhsl.craftattack.spawn.Main; +import eu.mhsl.craftattack.spawn.api.client.ReqResp; +import eu.mhsl.craftattack.spawn.api.client.repositories.ReportRepository; import eu.mhsl.craftattack.spawn.appliance.Appliance; import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand; import net.kyori.adventure.text.Component; @@ -51,15 +53,6 @@ public class Report extends Appliance { private record ReportResponse(@NotNull String url) { } - private record ReportsResponse(List<ReportInfo> from_self, Object to_self) { - } - - private record ReportInfo(Reporter reported, @NotNull String subject, boolean draft, @NotNull String status, @NotNull String url) { - } - - private record Reporter(@NotNull String username, @NotNull String uuid) { - } - public void reportToUnknown(@NotNull Player issuer) { Request request = new Request(issuer.getUniqueId(), null, ""); this.issueReport(issuer, request); @@ -79,25 +72,20 @@ public class Report extends Appliance { } public void requestReports(Player issuer) { - URIBuilder uriBuilder = new URIBuilder(this.apiEndpoint); - uriBuilder.addParameter("secret", apiSecret); - uriBuilder.addParameter("uuid", issuer.getUniqueId().toString()); + ReqResp<ReportRepository.ReportsResponse> response = this.queryRepository(ReportRepository.class).queryReports(issuer.getUniqueId()); - try(HttpClient client = HttpClient.newHttpClient()) { - HttpRequest httpRequest = HttpRequest.newBuilder() - .uri(uriBuilder.build()) - .header("Content-Type", "application/json") - .GET() - .build(); + if(response.status() != 200) { + Main.logger().warning("Failed to request Reports: " + response.status()); + issuer.sendMessage( + Component.text() + .append(Component.text("Interner Serverfehler beim abfragen der Reports.", NamedTextColor.RED)) + .appendNewline() + .append(Component.text("Bitte melde dich bei einem Admin!", NamedTextColor.RED)) + ); + return; + } - HttpResponse<String> httpResponse = client.send(httpRequest, HttpResponse.BodyHandlers.ofString()); - this.printReports(issuer, httpResponse); - } catch (IOException | InterruptedException | URISyntaxException e) { - issuer.sendMessage( - Component.text("Internal server description: " + e.getMessage()).color(NamedTextColor.RED) - ); - throw new RuntimeException(e); - } + this.printReports(issuer, response); } private void issueReport(Player issuer, Request reportRequest) { @@ -121,21 +109,9 @@ public class Report extends Appliance { } } - private void printReports(Player issuer, HttpResponse<String> httpResponse) { - if(httpResponse.statusCode() != 200) { - - Main.logger().warning("Failed to request Reports: " + httpResponse.statusCode()); - issuer.sendMessage( - Component.text() - .append(Component.text("Interner Serverfehler beim abfragen der Reports.", NamedTextColor.RED)) - .appendNewline() - .append(Component.text("Bitte melde dich bei einem Admin!", NamedTextColor.RED)) - ); - return; - } - - List<ReportInfo> reports = new Gson().fromJson(httpResponse.body(), ReportsResponse.class).from_self; - reports.removeIf(reportInfo -> reportInfo.draft); + private void printReports(Player issuer, ReqResp<ReportRepository.ReportsResponse> response) { + List<ReportRepository.ReportInfo> reports = response.data().from_self(); + reports.removeIf(ReportRepository.ReportInfo::draft); if(reports.isEmpty()) { issuer.sendMessage( Component.text() @@ -158,9 +134,9 @@ public class Report extends Appliance { component.append( Component.text() .append(Component.text(" - ", NamedTextColor.WHITE)) - .append(Component.text(reportInfo.reported.username, NamedTextColor.WHITE)) - .append(Component.text(String.format(": %s", reportInfo.subject), NamedTextColor.GRAY)) - .clickEvent(ClickEvent.openUrl(reportInfo.url)) + .append(Component.text(reportInfo.reported().username(), NamedTextColor.WHITE)) + .append(Component.text(String.format(": %s", reportInfo.subject()), NamedTextColor.GRAY)) + .clickEvent(ClickEvent.openUrl(reportInfo.url())) .hoverEvent(HoverEvent.showText(Component.text("Klicke, um den Report einzusehen.", NamedTextColor.GOLD))) ); component.appendNewline();