From b9a1bee345824a2542e9a696724f89f5aa629e06 Mon Sep 17 00:00:00 2001 From: Arnav Gupta Date: Mon, 29 Jan 2018 00:57:08 +0530 Subject: [PATCH 1/3] fix deepObject serialization might fix https://github.com/swagger-api/swagger-ui/issues/4064 --- src/execute/oas3/style-serializer.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/execute/oas3/style-serializer.js b/src/execute/oas3/style-serializer.js index a405ab61a..00bee616d 100644 --- a/src/execute/oas3/style-serializer.js +++ b/src/execute/oas3/style-serializer.js @@ -7,7 +7,7 @@ const isRrc3986Unreserved = (char) => { return (/^[a-z0-9\-._~]+$/i).test(char) } -export function encodeDisallowedCharacters(str, {escape} = {}) { +export function encodeDisallowedCharacters(str, {escape} = {}, parse) { if (typeof str === 'number') { str = str.toString() } @@ -18,6 +18,10 @@ export function encodeDisallowedCharacters(str, {escape} = {}) { if (!escape) { return str } + + if (parse) { + return JSON.parse(str) + } return stringToCharArray(str).map((char) => { if (isRrc3986Unreserved(char)) { @@ -166,6 +170,6 @@ function encodePrimitive({key, value, style, escape}) { } if (style === 'deepObject') { - return valueEncoder(value) + return valueEncoder(value, {}, true) } } From bfc2664fe864d528592fee1026668878cbc7d723 Mon Sep 17 00:00:00 2001 From: Arnav Gupta Date: Mon, 29 Jan 2018 16:38:29 +0530 Subject: [PATCH 2/3] lint fix --- src/execute/oas3/style-serializer.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/execute/oas3/style-serializer.js b/src/execute/oas3/style-serializer.js index 00bee616d..62611364d 100644 --- a/src/execute/oas3/style-serializer.js +++ b/src/execute/oas3/style-serializer.js @@ -18,7 +18,7 @@ export function encodeDisallowedCharacters(str, {escape} = {}, parse) { if (!escape) { return str } - + if (parse) { return JSON.parse(str) } From 2e42ddde33a01f806703aab9320a5d3c88e0c40a Mon Sep 17 00:00:00 2001 From: Arnav Gupta Date: Mon, 29 Jan 2018 17:04:00 +0530 Subject: [PATCH 3/3] fix: test: deepObject can be used with explode: true only as per the spec only explode = true allowed for deepObject --- test/oas3/execute/style-explode/query.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/oas3/execute/style-explode/query.js b/test/oas3/execute/style-explode/query.js index a65dad862..37b8dbc6f 100644 --- a/test/oas3/execute/style-explode/query.js +++ b/test/oas3/execute/style-explode/query.js @@ -1122,7 +1122,7 @@ describe('OAS 3.0 - buildRequest w/ `style` & `explode` - query parameters', fun name: 'id', in: 'query', style: 'deepObject', - explode: false + explode: true } ] }