From 9343ae27e7e90ecc34bd5bba96acc69613d0dff0 Mon Sep 17 00:00:00 2001 From: straton Date: Wed, 8 Mar 2023 17:02:31 +0100 Subject: [PATCH] two fixes related to handling url params: - reuse the url parameters from the initial request - parse the url well when it contains url parameters --- .../elasticproxy/ElasticsearchProxyTemplate.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/elasticproxy/src/main/java/zone/cogni/asquare/elasticproxy/ElasticsearchProxyTemplate.java b/elasticproxy/src/main/java/zone/cogni/asquare/elasticproxy/ElasticsearchProxyTemplate.java index a289189f..9ff1da22 100644 --- a/elasticproxy/src/main/java/zone/cogni/asquare/elasticproxy/ElasticsearchProxyTemplate.java +++ b/elasticproxy/src/main/java/zone/cogni/asquare/elasticproxy/ElasticsearchProxyTemplate.java @@ -134,8 +134,9 @@ public void setParamValuesValidator(Map paramValuesValid this.paramValuesValidator = paramValuesValidator; } - private String buildUrl(String path) { - return UriComponentsBuilder.fromPath(path).build(false).toUri().toString(); + private String buildUrl(String path, MultiValueMap params) { + UriComponentsBuilder uriComponentsBuilder = UriComponentsBuilder.fromPath(path).queryParams(params); + return uriComponentsBuilder.build(false).toUriString(); } private Map mergeParams(MultiValueMap urlParams, Map bodyParams) { @@ -177,19 +178,17 @@ private boolean validateParams(String requestUUID, Map params) { } public ResponseEntity process(MultiValueMap urlParams, Map bodyParams) throws IOException { - String requestUUID = UUID.randomUUID().toString(); + return executeRequest(UUID.randomUUID().toString(), httpMethod, urlTemplate, urlParams, bodyParams); + } + private ResponseEntity executeRequest(String requestUUID, HttpMethod httpMethod, String url, MultiValueMap urlParams, Map bodyParams) throws IOException { Map params = mergeParams(urlParams, bodyParams); if (!validateParams(requestUUID, params)) { return ResponseEntity.badRequest().body(new InputStreamResource(IOUtils.toInputStream(requestUUID, StandardCharsets.UTF_8))); } - return executeRequest(requestUUID, httpMethod, urlTemplate, params); - } - - private ResponseEntity executeRequest(String requestUUID, HttpMethod httpMethod, String url, Map params) throws IOException { - Request request = new Request(httpMethod.name(), buildUrl(spel(url, params))); + Request request = new Request(httpMethod.name(), buildUrl(spel(url, params), urlParams)); if (HttpMethod.POST.equals(httpMethod) || HttpMethod.PUT.equals(httpMethod)) { request.setJsonEntity(thymeleaf(getTemplateContent(), params));