From 882bacf57bca52f61ec9e817a3314ab01c254ac5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20M=C3=BCller?= Date: Wed, 14 Oct 2026 21:07:27 +0200 Subject: [PATCH] added optional request timeout to http repositories --- .../spawn/core/api/client/HttpRepository.java | 14 ++++++++++++++ .../api/repositories/WhitelistRepository.java | 9 +++++++++ 2 files changed, 23 insertions(+) diff --git a/core/src/main/java/eu/mhsl/craftattack/spawn/core/api/client/HttpRepository.java b/core/src/main/java/eu/mhsl/craftattack/spawn/core/api/client/HttpRepository.java index ee9eebf..74ced9f 100644 --- a/core/src/main/java/eu/mhsl/craftattack/spawn/core/api/client/HttpRepository.java +++ b/core/src/main/java/eu/mhsl/craftattack/spawn/core/api/client/HttpRepository.java @@ -10,6 +10,7 @@ import java.net.URISyntaxException; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; +import java.time.Duration; import java.util.List; import java.util.Objects; import java.util.function.Consumer; @@ -74,6 +75,19 @@ public abstract class HttpRepository extends Repository { return this.execute(request, outputType, null); } + /** + * Like {@link #get(String, Class)}, but the request fails with an exception once the timeout has passed. + */ + protected ReqResp get(String command, Duration timeout, Class outputType) { + HttpRequest request = this.getRequestBuilder(this.getUri(command, parameters -> { + })) + .timeout(timeout) + .GET() + .build(); + + return this.execute(request, outputType, null); + } + private URI getUri(String command, Consumer parameters) { try { URIBuilder builder = new URIBuilder(this.basePath + "/" + command); diff --git a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/api/repositories/WhitelistRepository.java b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/api/repositories/WhitelistRepository.java index cad137e..3e63032 100644 --- a/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/api/repositories/WhitelistRepository.java +++ b/craftattack/src/main/java/eu/mhsl/craftattack/spawn/craftattack/api/repositories/WhitelistRepository.java @@ -4,6 +4,7 @@ import eu.mhsl.craftattack.spawn.core.api.client.HttpRepository; import eu.mhsl.craftattack.spawn.core.api.client.ReqResp; import eu.mhsl.craftattack.spawn.common.api.CraftAttackApi; +import java.time.Duration; import java.util.List; import java.util.UUID; @@ -29,4 +30,12 @@ public class WhitelistRepository extends HttpRepository { UserData.class ); } + + public ReqResp getUserData(UUID userId, Duration timeout) { + return this.get( + "users/%s".formatted(userId.toString()), + timeout, + UserData.class + ); + } }