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";