Skip to content
Snippets Groups Projects
Commit 590f4f41 authored by Sofiane Lasri's avatar Sofiane Lasri
Browse files

Modernisation des appels à des anciennes méthodes & mise en static public de config

parent f0207a49
Branches
No related tags found
No related merge requests found
Pipeline #186 passed
......@@ -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>
......
......@@ -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;
......
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);
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();
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()));
StringBuilder response = new StringBuilder();
String inputLine;
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
con.disconnect();
return response.toString();
} catch (Exception ex) {
ex.printStackTrace();
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 postDataBuilder Données POST
* @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);
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();
// 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);
}
in.close();
con.disconnect();
return response.toString();
} catch (Exception ex) {
ex.printStackTrace();
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;
}
});
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment