implemented reports request in Report.java
This commit is contained in:
parent
0276763a8d
commit
694ca0efba
@ -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
|
||||
);
|
||||
}
|
||||
}
|
||||
|
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user