From a1f84b7bd068e4ca53b6736402e080892ac72b4a Mon Sep 17 00:00:00 2001 From: Lama Alosaimi Date: Tue, 4 Oct 2022 13:01:22 +0300 Subject: [PATCH] feature: payload to Query String added a sharedflow to move fields from client's json payload to target's query string since the request body gets encrypted in the https packet unlike the url --- .../SF-PayloadToQueryString/README.md | 32 +++++++++++++++++++ .../JS-ExtractPayloadAndAssignQueryString.xml | 6 ++++ .../JS-ExtractPayloadAndAssignQueryString.js | 24 ++++++++++++++ .../sharedflowbundle/sharedflows/default.xml | 6 ++++ 4 files changed, 68 insertions(+) create mode 100755 sample-sharedflows/SF-PayloadToQueryString/README.md create mode 100755 sample-sharedflows/SF-PayloadToQueryString/sharedflowbundle/policies/JS-ExtractPayloadAndAssignQueryString.xml create mode 100755 sample-sharedflows/SF-PayloadToQueryString/sharedflowbundle/resources/jsc/JS-ExtractPayloadAndAssignQueryString.js create mode 100755 sample-sharedflows/SF-PayloadToQueryString/sharedflowbundle/sharedflows/default.xml diff --git a/sample-sharedflows/SF-PayloadToQueryString/README.md b/sample-sharedflows/SF-PayloadToQueryString/README.md new file mode 100755 index 00000000..67769a44 --- /dev/null +++ b/sample-sharedflows/SF-PayloadToQueryString/README.md @@ -0,0 +1,32 @@ +## USAGE + +**create flow callout policy in your proxy** + +```xml + + + FC-PayloadToQueryString + + + + ["name"] + + SF-PayloadToQueryString + +``` + +--- + +## Call the proxy + +```sh +curl --location --request POST {{proxyURL}} \ +--header 'Content-Type: application/json' \ +--data-raw '{ + "name": "lama", + "gender": "female", + "age": 26 +}' +``` + + diff --git a/sample-sharedflows/SF-PayloadToQueryString/sharedflowbundle/policies/JS-ExtractPayloadAndAssignQueryString.xml b/sample-sharedflows/SF-PayloadToQueryString/sharedflowbundle/policies/JS-ExtractPayloadAndAssignQueryString.xml new file mode 100755 index 00000000..2b8ff28e --- /dev/null +++ b/sample-sharedflows/SF-PayloadToQueryString/sharedflowbundle/policies/JS-ExtractPayloadAndAssignQueryString.xml @@ -0,0 +1,6 @@ + + + JS-ExtractPayloadAndAssignQueryString + + jsc://JS-ExtractPayloadAndAssignQueryString.js + diff --git a/sample-sharedflows/SF-PayloadToQueryString/sharedflowbundle/resources/jsc/JS-ExtractPayloadAndAssignQueryString.js b/sample-sharedflows/SF-PayloadToQueryString/sharedflowbundle/resources/jsc/JS-ExtractPayloadAndAssignQueryString.js new file mode 100755 index 00000000..47b0323b --- /dev/null +++ b/sample-sharedflows/SF-PayloadToQueryString/sharedflowbundle/resources/jsc/JS-ExtractPayloadAndAssignQueryString.js @@ -0,0 +1,24 @@ +if(request.content !== null || request.content !== ''){ + try{ + var fields = JSON.parse(context.getVariable("SF-PayloadToQueryStrin.fields")); + payload = JSON.parse(request.content); + + for(var i in fields){ + var field = fields[i]; + if(payload[field] !== undefined){ + print("[INFO] found key: " + field); + context.setVariable("request.queryparam."+field, payload[field]); + delete payload[field]; + } + else{ + print("[WARN] didn't find key: " + field); + } + } + }catch(e){ + print("[ERROR] Exception Occured:\t" + e); + } + finally{ + print("[INFO] Assigning the new payload to the request object"); + context.setVariable("request.content", JSON.stringify(payload)); + } +} \ No newline at end of file diff --git a/sample-sharedflows/SF-PayloadToQueryString/sharedflowbundle/sharedflows/default.xml b/sample-sharedflows/SF-PayloadToQueryString/sharedflowbundle/sharedflows/default.xml new file mode 100755 index 00000000..d6c8aab4 --- /dev/null +++ b/sample-sharedflows/SF-PayloadToQueryString/sharedflowbundle/sharedflows/default.xml @@ -0,0 +1,6 @@ + + + + JS-ExtractPayloadAndAssignQueryString + + \ No newline at end of file