diff --git a/Example/pom.xml b/Example/pom.xml
index 8fd8fd4..ed27a0f 100644
--- a/Example/pom.xml
+++ b/Example/pom.xml
@@ -67,5 +67,13 @@
6.4.2
compile
+
+
+
+ com.squareup.okhttp3
+ okhttp
+ 4.11.0
+ compile
+
\ No newline at end of file
diff --git a/Example/src/main/java/me/braydon/example/LicenseExample.java b/Example/src/main/java/me/braydon/example/LicenseExample.java
index 11b12f9..535e776 100644
--- a/Example/src/main/java/me/braydon/example/LicenseExample.java
+++ b/Example/src/main/java/me/braydon/example/LicenseExample.java
@@ -8,16 +8,14 @@ import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NonNull;
import lombok.ToString;
+import okhttp3.*;
import oshi.SystemInfo;
import oshi.hardware.CentralProcessor;
import oshi.hardware.ComputerSystem;
import oshi.hardware.HardwareAbstractionLayer;
import oshi.software.os.OperatingSystem;
-import java.io.*;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
+import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@@ -30,7 +28,6 @@ import java.util.Map;
*
* @author Braydon
* @see License Server
- * TODO: Convert to okhttp?
*/
public final class LicenseExample {
/**
@@ -56,88 +53,67 @@ public final class LicenseExample {
*/
@NonNull
public static LicenseResponse check(@NonNull String key, @NonNull String product) {
- String hardwareId = getHardwareId(); // Get the machine's hardware id
+ String hardwareId = getHardwareId(); // Get the hardware id of the machine
- // Build the body
+ // Build the json body
Map body = new HashMap<>();
body.put("key", key);
body.put("product", product);
body.put("hwid", hardwareId);
String bodyJson = GSON.toJson(body); // The json body
- HttpURLConnection connection = null;
- int responseCode = -1; // The response code
- try {
- // Try and send the request to the server
- connection = (HttpURLConnection) new URL(CHECK_ENDPOINT).openConnection();
- connection.setRequestMethod("POST"); // Sending a POST request
- connection.setRequestProperty("Content-Type", "application/json"); // We want JSON as the response
- connection.setDoOutput(true); // We want to send a body
+ OkHttpClient client = new OkHttpClient(); // Create a new http client
+ MediaType mediaType = MediaType.parse("application/json"); // Ensure the media type is json
+ RequestBody requestBody = RequestBody.create(bodyJson, mediaType); // Build the request body
+ Request request = new Request.Builder()
+ .url(CHECK_ENDPOINT)
+ .post(requestBody)
+ .build(); // Build the POST request
+
+ Response response = null; // The response of the request
+ int responseCode = -1; // The response code of the request
+ try { // Attempt to execute the request
+ response = client.newCall(request).execute();
+ responseCode = response.code();
- // Write the body to the connection
- try (OutputStream outputStream = connection.getOutputStream()) {
- byte[] input = bodyJson.getBytes(StandardCharsets.UTF_8);
- outputStream.write(input, 0, input.length);
- }
- responseCode = connection.getResponseCode(); // Get the response code
-
- // If the response code is OK, we can read the response
- if (responseCode == HttpURLConnection.HTTP_OK) {
- try (InputStream inputStream = connection.getInputStream();
- InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
- BufferedReader reader = new BufferedReader(inputStreamReader)
- ) {
- // Read the response
- StringBuilder response = new StringBuilder();
- String line;
- while ((line = reader.readLine()) != null) {
- response.append(line);
- }
- // Parse the response as JSON
- JsonObject json = GSON.fromJson(response.toString(), JsonObject.class);
- JsonElement description = json.get("description");
- JsonElement ownerSnowflake = json.get("ownerSnowflake");
- JsonElement ownerName = json.get("ownerName");
- JsonElement duration = json.get("duration");
- return new LicenseResponse(200, null,
- description.isJsonNull() ? null : description.getAsString(),
- ownerSnowflake.isJsonNull() ? -1 : ownerSnowflake.getAsLong(),
- ownerName.isJsonNull() ? null : ownerName.getAsString(),
- duration.isJsonNull() ? -1 : duration.getAsLong()
- );
- }
- } else { // Otherwise, the request failed
- // Check if the response has an error message in JSON format
- try (InputStream errorStream = connection.getErrorStream()) {
- if (errorStream != null) { // Read the error response
- try (InputStreamReader errorStreamReader = new InputStreamReader(errorStream);
- BufferedReader errorReader = new BufferedReader(errorStreamReader)
- ) {
-
- StringBuilder errorResponse = new StringBuilder();
- String errorLine;
- while ((errorLine = errorReader.readLine()) != null) {
- errorResponse.append(errorLine);
- }
- // Parse the error response as JSON
- JsonObject jsonError = GSON.fromJson(errorResponse.toString(), JsonObject.class);
- JsonElement errorMessage = jsonError.get("error");
- if (!errorMessage.isJsonNull()) { // If the error message isn't null, we can return it
- return new LicenseResponse(responseCode, errorMessage.getAsString());
- }
- }
+ // If the response is successful, we can parse the response
+ if (response.isSuccessful()) {
+ ResponseBody responseBody = response.body();
+ assert responseBody != null; // We don't want the response body being null
+
+ JsonObject json = GSON.fromJson(responseBody.string(), JsonObject.class); // Parse the json
+ JsonElement description = json.get("description");
+ JsonElement ownerSnowflake = json.get("ownerSnowflake");
+ JsonElement ownerName = json.get("ownerName");
+ JsonElement duration = json.get("duration");
+
+ // Return the license response
+ return new LicenseResponse(200, null,
+ description.isJsonNull() ? null : description.getAsString(),
+ ownerSnowflake.isJsonNull() ? -1 : ownerSnowflake.getAsLong(),
+ ownerName.isJsonNull() ? null : ownerName.getAsString(),
+ duration.isJsonNull() ? -1 : duration.getAsLong()
+ );
+ } else {
+ ResponseBody errorBody = response.body(); // Get the error body
+ if (errorBody != null) { // If we have an error body, we can parse it
+ String errorResponse = errorBody.string();
+ JsonObject jsonError = GSON.fromJson(errorResponse, JsonObject.class);
+ JsonElement errorMessage = jsonError.get("error");
+ if (!errorMessage.isJsonNull()) { // We have an error message, return it
+ return new LicenseResponse(responseCode, errorMessage.getAsString());
}
}
}
} catch (IOException ex) {
ex.printStackTrace();
} finally {
- // Close the connection if it's open
- if (connection != null) {
- connection.disconnect();
+ // Close the response if it's open
+ if (response != null) {
+ response.close();
}
}
- // Didn't find an error message, return an unknown error
+ // Return an unknown error
return new LicenseResponse(responseCode, "An unknown error occurred");
}