From 590f4f417020fa983a812e4475a774056923c134 Mon Sep 17 00:00:00 2001 From: Sofiane Lasri-Trienpont <alasri250@gmail.com> Date: Tue, 31 Oct 2023 14:36:41 +0100 Subject: [PATCH] =?UTF-8?q?Modernisation=20des=20appels=20=C3=A0=20des=20a?= =?UTF-8?q?nciennes=20m=C3=A9thodes=20&=20mise=20en=20static=20public=20de?= =?UTF-8?q?=20config?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 4 +- .../com/slprojects/slcraftplugin/Main.java | 2 +- .../utils/web/AsyncHttpClient.java | 111 ++++++++---------- 3 files changed, 50 insertions(+), 67 deletions(-) diff --git a/pom.xml b/pom.xml index 814eae9..5f9fc04 100644 --- a/pom.xml +++ b/pom.xml @@ -25,8 +25,8 @@ <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> - <source>9</source> - <target>9</target> + <source>17</source> + <target>17</target> </configuration> </plugin> <plugin> diff --git a/src/main/java/com/slprojects/slcraftplugin/Main.java b/src/main/java/com/slprojects/slcraftplugin/Main.java index 332348c..d3e36f8 100644 --- a/src/main/java/com/slprojects/slcraftplugin/Main.java +++ b/src/main/java/com/slprojects/slcraftplugin/Main.java @@ -49,7 +49,7 @@ import java.util.regex.Pattern; public final class Main extends JavaPlugin implements Listener { // Variables - private static FileConfiguration config; + public static FileConfiguration config; public static LuckPerms luckPermsApi; public static String pluginName; diff --git a/src/main/java/com/slprojects/slcraftplugin/utils/web/AsyncHttpClient.java b/src/main/java/com/slprojects/slcraftplugin/utils/web/AsyncHttpClient.java index 37c1e04..b624179 100644 --- a/src/main/java/com/slprojects/slcraftplugin/utils/web/AsyncHttpClient.java +++ b/src/main/java/com/slprojects/slcraftplugin/utils/web/AsyncHttpClient.java @@ -1,92 +1,75 @@ package com.slprojects.slcraftplugin.utils.web; -import java.net.HttpURLConnection; -import java.net.URL; -import java.io.BufferedReader; -import java.io.InputStreamReader; -import java.io.OutputStream; +import com.slprojects.slcraftplugin.Main; +import com.slprojects.slcraftplugin.utils.ConsoleLog; + +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; import java.util.Map; import java.util.concurrent.CompletableFuture; +import java.util.stream.Stream; /** * Client HTTP asynchrone */ public class AsyncHttpClient { + private final HttpClient httpClient; + + public AsyncHttpClient() { + this.httpClient = HttpClient.newBuilder().build(); + } + /** * Effectue une requête GET + * * @param urlString URL * @return Réponse */ public CompletableFuture<String> get(String urlString) { - return CompletableFuture.supplyAsync(() -> { - try { - URL url = new URL(urlString); - HttpURLConnection con = (HttpURLConnection) url.openConnection(); - con.setRequestMethod("GET"); - con.setConnectTimeout(5000); - con.setReadTimeout(5000); - - BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); - StringBuilder response = new StringBuilder(); - String inputLine; - - while ((inputLine = in.readLine()) != null) { - response.append(inputLine); - } + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(urlString)) + .header("User-Agent", Main.config.getString("name") + " " + Main.config.getString("version")) + .header("Server-Type", Main.config.getString("server-type")) + .GET() + .build(); - in.close(); - con.disconnect(); - return response.toString(); - } catch (Exception ex) { - ex.printStackTrace(); - return null; - } - }); + return httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString()) + .thenApply(HttpResponse::body) + .exceptionally(ex -> { + ConsoleLog.danger("Erreur lors de la requête GET vers " + urlString); + ConsoleLog.danger(ex.getMessage()); + return null; + }); } /** * Effectue une requête GET avec des headers - * @param urlString URL + * + * @param urlString URL * @param postDataBuilder Données POST - * @param headers Headers + * @param headers Headers * @return Réponse */ public CompletableFuture<String> post(String urlString, PostDataBuilder postDataBuilder, Map<String, String> headers) { - return CompletableFuture.supplyAsync(() -> { - try { - URL url = new URL(urlString); - HttpURLConnection con = (HttpURLConnection) url.openConnection(); - con.setRequestMethod("POST"); - con.setConnectTimeout(5000); - con.setReadTimeout(5000); - - // Set request headers - headers.forEach(con::setRequestProperty); - - con.setDoOutput(true); - - // Write the request body - try (OutputStream os = con.getOutputStream()) { - byte[] input = postDataBuilder.build().getBytes("utf-8"); - os.write(input, 0, input.length); - } - - BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); - StringBuilder response = new StringBuilder(); - String inputLine; - - while ((inputLine = in.readLine()) != null) { - response.append(inputLine); - } + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(urlString)) + .header("User-Agent", Main.config.getString("name") + " " + Main.config.getString("version")) + .header("Server-Type", Main.config.getString("server-type")) + .headers(headers.entrySet().stream() + .flatMap(entry -> Stream.of(entry.getKey(), entry.getValue())) + .toArray(String[]::new)) + .POST(HttpRequest.BodyPublishers.ofString(postDataBuilder.build())) + .build(); - in.close(); - con.disconnect(); - return response.toString(); - } catch (Exception ex) { - ex.printStackTrace(); - return null; - } - }); + return httpClient.sendAsync(request, HttpResponse.BodyHandlers.ofString()) + .thenApply(HttpResponse::body) + .exceptionally(ex -> { + ConsoleLog.danger("Erreur lors de la requête POST vers " + urlString); + ConsoleLog.danger(ex.getMessage()); + return null; + }); } } -- GitLab