From eeb86ae534f7fdbfcb282ff18feafd54fc81701c Mon Sep 17 00:00:00 2001 From: Alejandro Maldonado Date: Mon, 6 Apr 2026 15:03:19 -0500 Subject: [PATCH] LP-1315: Enhance GET request handling and add query string builder for JSON parameters --- README.md | 4 +-- pom.xml | 2 +- src/main/java/veryfi/Constants.java | 2 +- src/main/java/veryfi/NetworkClient.java | 44 +++++++++++++++++++++---- 4 files changed, 42 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 75b9c7b..77a7806 100755 --- a/README.md +++ b/README.md @@ -18,12 +18,12 @@ Install the package using Maven: com.veryfi veryfi-java - 2.1.1 + 2.1.2 ``` Install the package using Gradle: ```bash -implementation group: 'com.veryfi', name: 'veryfi-java', version: '2.1.1' +implementation group: 'com.veryfi', name: 'veryfi-java', version: '2.1.2' ``` ## Getting Started diff --git a/pom.xml b/pom.xml index d2cf0ab..335c0fe 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.veryfi veryfi-java - 2.1.1 + 2.1.2 jar veryfi-java diff --git a/src/main/java/veryfi/Constants.java b/src/main/java/veryfi/Constants.java index 8939e79..b0d1345 100644 --- a/src/main/java/veryfi/Constants.java +++ b/src/main/java/veryfi/Constants.java @@ -27,7 +27,7 @@ private Constants() { /** * header for HttpRequest */ - public static final String USER_AGENT_JAVA = "Java Veryfi-Java/2.1.1"; + public static final String USER_AGENT_JAVA = "Java Veryfi-Java/2.1.2"; /** * header for HttpRequest */ diff --git a/src/main/java/veryfi/NetworkClient.java b/src/main/java/veryfi/NetworkClient.java index c517efb..614710f 100644 --- a/src/main/java/veryfi/NetworkClient.java +++ b/src/main/java/veryfi/NetworkClient.java @@ -1,5 +1,6 @@ package veryfi; +import org.json.JSONArray; import org.json.JSONObject; import veryfi.enums.HttpMethod; @@ -7,6 +8,7 @@ import javax.crypto.spec.SecretKeySpec; import java.io.File; import java.net.URI; +import java.net.URLEncoder; import java.net.http.HttpClient; import java.net.http.HttpHeaders; import java.net.http.HttpRequest; @@ -141,16 +143,46 @@ private HttpRequest getHttpRequest(HttpMethod httpVerb, String endpointName, JSO .headers(headers.toArray(new String[0])) .PUT(HttpRequest.BodyPublishers.ofString(requestArguments.toString())) .build(); - default -> request = HttpRequest.newBuilder() - .uri(URI.create(apiUrl)) - .timeout(Duration.ofSeconds(timeOut)) - .headers(headers.toArray(new String[0])) - .GET() - .build(); + default -> { + String getUri = apiUrl; + String query = buildQueryString(requestArguments); + if (!query.isEmpty()) { + getUri = apiUrl + "?" + query; + } + request = HttpRequest.newBuilder() + .uri(URI.create(getUri)) + .timeout(Duration.ofSeconds(timeOut)) + .headers(headers.toArray(new String[0])) + .GET() + .build(); + } } return request; } + /** + * Builds an application/x-www-form-urlencoded query string from a JSON object (GET parameters). + */ + private static String buildQueryString(JSONObject requestArguments) { + if (requestArguments == null || requestArguments.isEmpty()) { + return ""; + } + StringJoiner joiner = new StringJoiner("&"); + for (String key : requestArguments.keySet()) { + Object value = requestArguments.opt(key); + if (value == null || JSONObject.NULL.equals(value)) { + continue; + } + String valueStr = (value instanceof JSONObject || value instanceof JSONArray) + ? value.toString() + : String.valueOf(value); + joiner.add(URLEncoder.encode(key, StandardCharsets.UTF_8) + + "=" + + URLEncoder.encode(valueStr, StandardCharsets.UTF_8)); + } + return joiner.toString(); + } + /** * Prepares the headers needed for a request. *