diff --git a/packages/bruno-cli/src/runner/interpolate-vars.js b/packages/bruno-cli/src/runner/interpolate-vars.js index 6debaffb..cf7109ad 100644 --- a/packages/bruno-cli/src/runner/interpolate-vars.js +++ b/packages/bruno-cli/src/runner/interpolate-vars.js @@ -42,6 +42,15 @@ const interpolateVars = (request, envVars = {}, collectionVariables ={}) => { request.data = interpolate(request.data); } } + } else if(request.headers["content-type"] === "application/x-www-form-urlencoded") { + if(typeof request.data === "object") { + try { + let parsed = JSON.stringify(request.data); + parsed = interpolate(parsed); + request.data = JSON.parse(parsed); + } catch (err) { + } + } } else { request.data = interpolate(request.data); } diff --git a/packages/bruno-cli/src/runner/prepare-request.js b/packages/bruno-cli/src/runner/prepare-request.js index bcc388d9..44d3465b 100644 --- a/packages/bruno-cli/src/runner/prepare-request.js +++ b/packages/bruno-cli/src/runner/prepare-request.js @@ -1,5 +1,4 @@ const { get, each, filter } = require('lodash'); -const qs = require('qs'); const prepareRequest = (request) => { const headers = {}; @@ -41,7 +40,7 @@ const prepareRequest = (request) => { const params = {}; const enabledParams = filter(request.body.formUrlEncoded, (p) => p.enabled); each(enabledParams, (p) => (params[p.name] = p.value)); - axiosRequest.data = qs.stringify(params); + axiosRequest.data = params; } if (request.body.mode === 'multipartForm') { diff --git a/packages/bruno-cli/src/runner/run-single-request.js b/packages/bruno-cli/src/runner/run-single-request.js index 65953610..e2ce6a83 100644 --- a/packages/bruno-cli/src/runner/run-single-request.js +++ b/packages/bruno-cli/src/runner/run-single-request.js @@ -1,3 +1,4 @@ +const qs = require('qs'); const chalk = require('chalk'); const { forOwn, each, extend, get } = require('lodash'); const FormData = require('form-data'); @@ -39,6 +40,11 @@ const runSingleRequest = async function (filename, bruJson, collectionPath, coll // interpolate variables inside request interpolateVars(request, envVariables, collectionVariables); + // stringify the request url encoded params + if(request.headers['content-type'] = 'application/x-www-form-urlencoded') { + request.data = qs.stringify(request.data); + } + // run request const response = await axios(request); diff --git a/packages/bruno-electron/src/ipc/network/index.js b/packages/bruno-electron/src/ipc/network/index.js index 1c9b0ace..734af95f 100644 --- a/packages/bruno-electron/src/ipc/network/index.js +++ b/packages/bruno-electron/src/ipc/network/index.js @@ -1,3 +1,4 @@ +const qs = require('qs'); const axios = require('axios'); const Mustache = require('mustache'); const FormData = require('form-data'); @@ -124,6 +125,11 @@ const registerNetworkIpc = (mainWindow, watcher, lastOpenedCollections) => { interpolateVars(request, envVars, collectionVariables); + // stringify the request url encoded params + if(request.headers['content-type'] = 'application/x-www-form-urlencoded') { + request.data = qs.stringify(request.data); + } + // todo: // i have no clue why electron can't send the request object // without safeParseJSON(safeStringifyJSON(request.data)) diff --git a/packages/bruno-electron/src/ipc/network/interpolate-vars.js b/packages/bruno-electron/src/ipc/network/interpolate-vars.js index c9845f23..8e54430c 100644 --- a/packages/bruno-electron/src/ipc/network/interpolate-vars.js +++ b/packages/bruno-electron/src/ipc/network/interpolate-vars.js @@ -42,6 +42,15 @@ const interpolateVars = (request, envVars = {}, collectionVariables ={}) => { request.data = interpolate(request.data); } } + } else if(request.headers["content-type"] === "application/x-www-form-urlencoded") { + if(typeof request.data === "object") { + try { + let parsed = JSON.stringify(request.data); + parsed = interpolate(parsed); + request.data = JSON.parse(parsed); + } catch (err) { + } + } } else { request.data = interpolate(request.data); } diff --git a/packages/bruno-electron/src/ipc/network/prepare-request.js b/packages/bruno-electron/src/ipc/network/prepare-request.js index ef2feb45..9305c25f 100644 --- a/packages/bruno-electron/src/ipc/network/prepare-request.js +++ b/packages/bruno-electron/src/ipc/network/prepare-request.js @@ -1,5 +1,4 @@ const { get, each, filter } = require('lodash'); -const qs = require('qs'); const prepareRequest = (request) => { const headers = {}; @@ -39,7 +38,7 @@ const prepareRequest = (request) => { const params = {}; const enabledParams = filter(request.body.formUrlEncoded, (p) => p.enabled); each(enabledParams, (p) => (params[p.name] = p.value)); - axiosRequest.data = qs.stringify(params); + axiosRequest.data = params; } if (request.body.mode === 'multipartForm') {