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