From 4a4439f48e1713401c007f2e0c729f98bcf854f9 Mon Sep 17 00:00:00 2001 From: lohit Date: Thu, 8 Aug 2024 18:36:00 +0530 Subject: [PATCH] disable response json parse flag (#2782) * disable response json parse flag * fix: pr review comments --- packages/bruno-electron/src/ipc/network/index.js | 12 +++++++----- packages/bruno-js/src/bruno-request.js | 4 ++++ 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/packages/bruno-electron/src/ipc/network/index.js b/packages/bruno-electron/src/ipc/network/index.js index 9659f45b4..63b5ea2ba 100644 --- a/packages/bruno-electron/src/ipc/network/index.js +++ b/packages/bruno-electron/src/ipc/network/index.js @@ -267,7 +267,7 @@ const configureRequest = async ( return axiosInstance; }; -const parseDataFromResponse = (response) => { +const parseDataFromResponse = (response, disableParsingResponseJson = false) => { // Parse the charset from content type: https://stackoverflow.com/a/33192813 const charsetMatch = /charset=([^()<>@,;:"/[\]?.=\s]*)/i.exec(response.headers['content-type'] || ''); // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec#using_exec_with_regexp_literals @@ -285,7 +285,9 @@ const parseDataFromResponse = (response) => { // Filter out ZWNBSP character // https://gist.github.com/antic183/619f42b559b78028d1fe9e7ae8a1352d data = data.replace(/^\uFEFF/, ''); - data = JSON.parse(data); + if(!disableParsingResponseJson) { + data = JSON.parse(data); + } } catch {} return { data, dataBuffer }; @@ -534,7 +536,7 @@ const registerNetworkIpc = (mainWindow) => { // Continue with the rest of the request lifecycle - post response vars, script, assertions, tests - const { data, dataBuffer } = parseDataFromResponse(response); + const { data, dataBuffer } = parseDataFromResponse(response, request.__brunoDisableParsingResponseJson); response.data = data; response.responseTime = responseTime; @@ -694,7 +696,7 @@ const registerNetworkIpc = (mainWindow) => { } } - const { data } = parseDataFromResponse(response); + const { data } = parseDataFromResponse(response, request.__brunoDisableParsingResponseJson); response.data = data; await runPostResponse( @@ -948,7 +950,7 @@ const registerNetworkIpc = (mainWindow) => { response = await axiosInstance(request); timeEnd = Date.now(); - const { data, dataBuffer } = parseDataFromResponse(response); + const { data, dataBuffer } = parseDataFromResponse(response, request.__brunoDisableParsingResponseJson); response.data = data; response.responseTime = response.headers.get('request-duration'); diff --git a/packages/bruno-js/src/bruno-request.js b/packages/bruno-js/src/bruno-request.js index 6fabf50b4..518888484 100644 --- a/packages/bruno-js/src/bruno-request.js +++ b/packages/bruno-js/src/bruno-request.js @@ -167,6 +167,10 @@ class BrunoRequest { __isObject(obj) { return obj !== null && typeof obj === 'object'; } + + disableResponseJsonParse() { + this.req.__brunoDisableParsingResponseJson = true; + } } module.exports = BrunoRequest;