Add uri-encoding to webclient 18/100218/2
authorJozsef Csongvai <jozsef.csongvai@bell.ca>
Fri, 10 Jan 2020 21:12:08 +0000 (16:12 -0500)
committerKAPIL SINGAL <ks220y@att.com>
Mon, 13 Jan 2020 16:18:34 +0000 (16:18 +0000)
Path params are not uri-encoded, which can cause failed rest calls if
resolved params include characters such as whitespace

Issue-ID: CCSDK-2024
Change-Id: Iac57219260ac94897e09e3cb9d1d5884d86b83ae
Signed-off-by: Jozsef Csongvai <jozsef.csongvai@bell.ca>
ms/blueprintsprocessor/modules/commons/rest-lib/src/main/kotlin/org/onap/ccsdk/cds/blueprintsprocessor/rest/service/BlueprintWebClientService.kt

index 3c8d92c..c9c8aab 100644 (file)
@@ -42,9 +42,11 @@ import org.onap.ccsdk.cds.controllerblueprints.core.utils.BluePrintIOUtils
 import org.onap.ccsdk.cds.controllerblueprints.core.utils.JacksonUtils
 import org.springframework.http.HttpHeaders
 import org.springframework.http.HttpMethod
+import org.springframework.web.util.UriUtils
 import java.io.IOException
 import java.io.InputStream
 import java.nio.charset.Charset
+import java.nio.charset.StandardCharsets
 
 interface BlueprintWebClientService {
 
@@ -92,14 +94,15 @@ interface BlueprintWebClientService {
          * the difference is in convertToBasicHeaders vs basicHeaders
          */
         val convertedHeaders: Array<BasicHeader> = convertToBasicHeaders(headers)
+        val encodedPath = UriUtils.encodePath(path, StandardCharsets.UTF_8.name())
         return when (HttpMethod.resolve(methodType)) {
-            HttpMethod.DELETE -> delete(path, convertedHeaders, String::class.java)
-            HttpMethod.GET -> get(path, convertedHeaders, String::class.java)
-            HttpMethod.POST -> post(path, request, convertedHeaders, String::class.java)
-            HttpMethod.PUT -> put(path, request, convertedHeaders, String::class.java)
-            HttpMethod.PATCH -> patch(path, request, convertedHeaders, String::class.java)
+            HttpMethod.DELETE -> delete(encodedPath, convertedHeaders, String::class.java)
+            HttpMethod.GET -> get(encodedPath, convertedHeaders, String::class.java)
+            HttpMethod.POST -> post(encodedPath, request, convertedHeaders, String::class.java)
+            HttpMethod.PUT -> put(encodedPath, request, convertedHeaders, String::class.java)
+            HttpMethod.PATCH -> patch(encodedPath, request, convertedHeaders, String::class.java)
             else -> throw BluePrintProcessorException(
-                "Unsupported methodType($methodType) attempted on path($path)"
+                "Unsupported methodType($methodType) attempted on path($encodedPath)"
             )
         }
     }