Skip to content

Commit

Permalink
refactor createFormData to handle data as an array of objects and imp…
Browse files Browse the repository at this point in the history
…rove file handling
  • Loading branch information
sanjaikumar-bruno committed Dec 15, 2024
1 parent 09120a9 commit 57e6af7
Showing 1 changed file with 20 additions and 12 deletions.
32 changes: 20 additions & 12 deletions packages/bruno-electron/src/utils/form-data.js
Original file line number Diff line number Diff line change
Expand Up @@ -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;
};
Expand Down

0 comments on commit 57e6af7

Please sign in to comment.