This is an automated email from the ASF dual-hosted git repository.

mblow pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/asterixdb.git


The following commit(s) were added to refs/heads/master by this push:
     new 5710394  [NO ISSUE][HYR][UTL] Add methods to extract query params from 
a uri
5710394 is described below

commit 5710394a27dae6287aeea27ef618d2009097446e
Author: Michael Blow <[email protected]>
AuthorDate: Mon Dec 20 21:42:49 2021 -0500

    [NO ISSUE][HYR][UTL] Add methods to extract query params from a uri
    
    Change-Id: Ifac17d25b72b5a550a626325fcd6f9d5fe91407e
    Reviewed-on: https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/14623
    Integration-Tests: Jenkins <[email protected]>
    Tested-by: Jenkins <[email protected]>
    Reviewed-by: Ali Alsuliman <[email protected]>
---
 .../apache/hyracks/http/server/utils/HttpUtil.java    | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git 
a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java
 
b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java
index 3bd4033..e433c02 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-http/src/main/java/org/apache/hyracks/http/server/utils/HttpUtil.java
@@ -38,7 +38,9 @@ import java.util.regex.Pattern;
 import java.util.stream.Stream;
 
 import org.apache.commons.lang3.StringUtils;
+import org.apache.http.NameValuePair;
 import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.utils.URLEncodedUtils;
 import org.apache.hyracks.http.api.IServletRequest;
 import org.apache.hyracks.http.api.IServletResponse;
 import org.apache.hyracks.http.server.BaseRequest;
@@ -252,6 +254,23 @@ public class HttpUtil {
                 ? HttpScheme.HTTPS : HttpScheme.HTTP;
     }
 
+    /**
+     * @return the first parameter value of the supplied parameter name, or 
{@link Optional#empty()}
+     */
+    public static Optional<String> extractQueryParameter(String uri, String 
parameterName) {
+        return extractQueryParameters(uri, parameterName).map(values -> 
values[0]);
+    }
+
+    /**
+     * @return all parameter values of the supplied parameter name, or {@link 
Optional#empty()}
+     */
+    public static Optional<String[]> extractQueryParameters(String uri, String 
parameterName) {
+        String[] values = URLEncodedUtils.parse(uri, StandardCharsets.UTF_8, 
'?', '&').stream()
+                .filter(pair -> 
pair.getName().equals(parameterName)).map(NameValuePair::getValue)
+                .toArray(String[]::new);
+        return values.length == 0 ? Optional.empty() : Optional.of(values);
+    }
+
     public static class ContentType {
         public static final String ADM = "adm";
         public static final String JSON = "json";

Reply via email to