diff --git a/pom.xml b/pom.xml index 276a805..477ae73 100644 --- a/pom.xml +++ b/pom.xml @@ -82,6 +82,12 @@ 0.5.11 compile + + org.apache.httpcomponents.client5 + httpclient5 + 5.3.1 + compile + \ No newline at end of file diff --git a/src/main/java/cc/fascinated/api/controller/ExceptionControllerAdvice.java b/src/main/java/cc/fascinated/api/controller/ExceptionControllerAdvice.java index c601e10..9c68098 100644 --- a/src/main/java/cc/fascinated/api/controller/ExceptionControllerAdvice.java +++ b/src/main/java/cc/fascinated/api/controller/ExceptionControllerAdvice.java @@ -10,6 +10,7 @@ import org.springframework.web.bind.annotation.ResponseStatus; @ControllerAdvice public final class ExceptionControllerAdvice { + /** * Handle a raised exception. * diff --git a/src/main/java/cc/fascinated/mojang/MojangAPIService.java b/src/main/java/cc/fascinated/mojang/MojangAPIService.java index a1eb60c..b3aaa37 100644 --- a/src/main/java/cc/fascinated/mojang/MojangAPIService.java +++ b/src/main/java/cc/fascinated/mojang/MojangAPIService.java @@ -1,18 +1,13 @@ package cc.fascinated.mojang; -import cc.fascinated.Main; import cc.fascinated.mojang.types.MojangApiProfile; import cc.fascinated.mojang.types.MojangSessionServerProfile; -import com.google.gson.reflect.TypeToken; -import lombok.SneakyThrows; +import cc.fascinated.util.WebRequest; +import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; -import java.net.URI; -import java.net.http.HttpRequest; -import java.net.http.HttpResponse; - -@Service +@Service @Log4j2 public class MojangAPIService { @Value("${mojang.session-server}") @@ -27,18 +22,8 @@ public class MojangAPIService { * @param id the uuid or name of the player * @return the profile */ - @SneakyThrows public MojangSessionServerProfile getSessionServerProfile(String id) { - HttpRequest request = HttpRequest.newBuilder() - .uri(new URI(mojangSessionServerUrl + "/session/minecraft/profile/" + id)) - .GET() - .build(); - - HttpResponse response = Main.getCLIENT().send(request, HttpResponse.BodyHandlers.ofString()); - if (response.statusCode() != 200) { - return null; - } - return Main.getGSON().fromJson(response.body(), new TypeToken(){}.getType()); + return WebRequest.get(mojangSessionServerUrl + "/session/minecraft/profile/" + id); } /** @@ -47,17 +32,7 @@ public class MojangAPIService { * @param id the name of the player * @return the profile */ - @SneakyThrows public MojangApiProfile getApiProfile(String id) { - HttpRequest request = HttpRequest.newBuilder() - .uri(new URI(mojangApiUrl + "/users/profiles/minecraft/" + id)) - .GET() - .build(); - - HttpResponse response = Main.getCLIENT().send(request, HttpResponse.BodyHandlers.ofString()); - if (response.statusCode() != 200) { - return null; - } - return Main.getGSON().fromJson(response.body(), new TypeToken(){}.getType()); + return WebRequest.get(mojangApiUrl + "/users/profiles/minecraft/" + id); } } diff --git a/src/main/java/cc/fascinated/player/impl/Skin.java b/src/main/java/cc/fascinated/player/impl/Skin.java index b7e9fa4..eb227bf 100644 --- a/src/main/java/cc/fascinated/player/impl/Skin.java +++ b/src/main/java/cc/fascinated/player/impl/Skin.java @@ -5,7 +5,6 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Getter; import lombok.SneakyThrows; import lombok.extern.log4j.Log4j2; -import org.apache.tomcat.util.http.fileupload.IOUtils; import java.io.InputStream; import java.net.URI; diff --git a/src/main/java/cc/fascinated/util/WebRequest.java b/src/main/java/cc/fascinated/util/WebRequest.java new file mode 100644 index 0000000..05d7b50 --- /dev/null +++ b/src/main/java/cc/fascinated/util/WebRequest.java @@ -0,0 +1,39 @@ +package cc.fascinated.util; + +import org.springframework.http.ResponseEntity; +import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; +import org.springframework.web.client.HttpClientErrorException; +import org.springframework.web.client.RestClient; + +public class WebRequest { + + /** + * The web client. + */ + private static final RestClient CLIENT = RestClient.builder() + .requestFactory(new HttpComponentsClientHttpRequestFactory()) + .build(); + + /** + * Gets a response from the given URL. + * + * @param url the url + * @return the response + * @param the type of the response + */ + public static T get(String url) { + try { + ResponseEntity profile = CLIENT.get() + .uri(url) + .retrieve() + .toEntity((Class) Object.class); + + if (profile.getStatusCode().isError()) { + return null; + } + return profile.getBody(); + } catch (HttpClientErrorException ex) { + return null; + } + } +}