From b792f490cb2770b2cece2e78b0bd5ed8ddb8c440 Mon Sep 17 00:00:00 2001 From: Zachary Elliott Date: Sun, 28 Jul 2024 19:10:34 -0600 Subject: [PATCH] Added more logic for raw file and added rawFile to validation list so it can be saved. --- .../providers/ReduxStore/slices/collections/index.js | 4 ++++ packages/bruno-app/src/utils/collections/index.js | 3 ++- .../bruno-electron/src/ipc/network/prepare-request.js | 10 ++++++++++ packages/bruno-schema/src/collections/index.js | 2 +- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/bruno-app/src/providers/ReduxStore/slices/collections/index.js b/packages/bruno-app/src/providers/ReduxStore/slices/collections/index.js index 894543a2f..1079af8c0 100644 --- a/packages/bruno-app/src/providers/ReduxStore/slices/collections/index.js +++ b/packages/bruno-app/src/providers/ReduxStore/slices/collections/index.js @@ -843,6 +843,10 @@ export const collectionsSlice = createSlice({ item.draft.request.body.multipartForm = action.payload.content; break; } + case 'rawFile': { + item.draft.request.body.rawFile = action.payload.content; + break; + } } } } diff --git a/packages/bruno-app/src/utils/collections/index.js b/packages/bruno-app/src/utils/collections/index.js index 97eed9562..abbef438c 100644 --- a/packages/bruno-app/src/utils/collections/index.js +++ b/packages/bruno-app/src/utils/collections/index.js @@ -294,7 +294,8 @@ export const transformCollectionToSaveToExportAsFile = (collection, options = {} graphql: si.request.body.graphql, sparql: si.request.body.sparql, formUrlEncoded: copyFormUrlEncodedParams(si.request.body.formUrlEncoded), - multipartForm: copyMultipartFormParams(si.request.body.multipartForm) + multipartForm: copyMultipartFormParams(si.request.body.multipartForm), + rawFile: si.request.body.rawFile }, script: si.request.script, vars: si.request.vars, diff --git a/packages/bruno-electron/src/ipc/network/prepare-request.js b/packages/bruno-electron/src/ipc/network/prepare-request.js index 934838b37..e2e4c3233 100644 --- a/packages/bruno-electron/src/ipc/network/prepare-request.js +++ b/packages/bruno-electron/src/ipc/network/prepare-request.js @@ -381,6 +381,16 @@ const prepareRequest = (item, collection) => { axiosRequest.data = form; } + if(request.body.mode === 'rawFile') { + if (request.body.rawFile && request.body.rawFile.value) { + axiosRequest.data = fs.readFileSync(request.body.rawFile.value); + fileLength = axiosRequest.data.length; + axiosRequest.headers['content-length'] = fileLength; + } else { + axiosRequest.data = null; + } + } + if (request.body.mode === 'graphql') { const graphqlQuery = { query: get(request, 'body.graphql.query'), diff --git a/packages/bruno-schema/src/collections/index.js b/packages/bruno-schema/src/collections/index.js index d72b9c6ef..f52a5e774 100644 --- a/packages/bruno-schema/src/collections/index.js +++ b/packages/bruno-schema/src/collections/index.js @@ -75,7 +75,7 @@ const multipartFormSchema = Yup.object({ const requestBodySchema = Yup.object({ mode: Yup.string() - .oneOf(['none', 'json', 'text', 'xml', 'formUrlEncoded', 'multipartForm', 'graphql', 'sparql']) + .oneOf(['none', 'json', 'text', 'xml', 'formUrlEncoded', 'multipartForm', 'graphql', 'sparql', 'rawFile']) .required('mode is required'), json: Yup.string().nullable(), text: Yup.string().nullable(),