From 57e6af703c1e2cf9ce86bf846919aebdecc80dea Mon Sep 17 00:00:00 2001 From: Sanjai Kumar Date: Sun, 15 Dec 2024 17:55:52 +0530 Subject: [PATCH] refactor createFormData to handle data as an array of objects and improve file handling --- .../bruno-electron/src/utils/form-data.js | 32 ++++++++++++------- 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/packages/bruno-electron/src/utils/form-data.js b/packages/bruno-electron/src/utils/form-data.js index 22bf1d3cca..cb799682ca 100644 --- a/packages/bruno-electron/src/utils/form-data.js +++ b/packages/bruno-electron/src/utils/form-data.js @@ -22,26 +22,34 @@ const buildFormUrlEncodedPayload = (params) => { }; -const createFormData = (datas, collectionPath) => { +const createFormData = (data, collectionPath) => { // make axios work in node using form data // reference: https://github.com/axios/axios/issues/1006#issuecomment-320165427 const form = new FormData(); - forOwn(datas, (value, key) => { - if (typeof value == 'string') { - form.append(key, value); + forEach(data, (datum) => { + const { name, type, value } = datum; + + if (type === 'text') { + if (Array.isArray(value)) { + value.forEach((val) => form.append(name, val)); + } else { + form.append(name, value); + } return; } - const filePaths = value || []; - filePaths?.forEach?.((filePath) => { - let trimmedFilePath = filePath.trim(); + if (type === 'file') { + const filePaths = value || []; + filePaths.forEach((filePath) => { + let trimmedFilePath = filePath.trim(); - if (!path.isAbsolute(trimmedFilePath)) { - trimmedFilePath = path.join(collectionPath, trimmedFilePath); - } + if (!path.isAbsolute(trimmedFilePath)) { + trimmedFilePath = path.join(collectionPath, trimmedFilePath); + } - form.append(key, fs.createReadStream(trimmedFilePath), path.basename(trimmedFilePath)); - }); + form.append(name, fs.createReadStream(trimmedFilePath), path.basename(trimmedFilePath)); + }); + } }); return form; };