feat(#1579): Add file uploading support for CLI (#1572)

* feat(cli): add support for file upload
* fix: remove wrong console log
This commit is contained in:
João Victor Davim 2024-02-13 19:07:11 -03:00 committed by GitHub
parent 2877a88a8a
commit f8eac3469f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 13 additions and 4 deletions

View File

@ -1,4 +1,5 @@
const { get, each, filter } = require('lodash'); const { get, each, filter } = require('lodash');
const fs = require('fs');
const decomment = require('decomment'); const decomment = require('decomment');
const prepareRequest = (request, collectionRoot) => { const prepareRequest = (request, collectionRoot) => {
@ -106,10 +107,15 @@ const prepareRequest = (request, collectionRoot) => {
if (request.body.mode === 'multipartForm') { if (request.body.mode === 'multipartForm') {
const params = {}; const params = {};
const enabledParams = filter(request.body.multipartForm, (p) => p.enabled); const enabledParams = filter(request.body.multipartForm, (p) => p.enabled);
each(enabledParams, (p) => (params[p.name] = p.value)); each(enabledParams, (p) => {
if (p.type === 'file') {
params[p.name] = p.value.map((path) => fs.createReadStream(path));
} else {
params[p.name] = p.value;
}
});
axiosRequest.headers['content-type'] = 'multipart/form-data'; axiosRequest.headers['content-type'] = 'multipart/form-data';
axiosRequest.data = params; axiosRequest.data = params;
// TODO: Add support for file uploads
} }
if (request.body.mode === 'graphql') { if (request.body.mode === 'graphql') {

View File

@ -40,10 +40,13 @@ const runSingleRequest = async function (
// make axios work in node using form data // make axios work in node using form data
// reference: https://github.com/axios/axios/issues/1006#issuecomment-320165427 // reference: https://github.com/axios/axios/issues/1006#issuecomment-320165427
if (request.headers && request.headers['content-type'] === 'multipart/form-data') { if (request.headers && request.headers['content-type'] === 'multipart/form-data') {
// TODO: Add support for file uploads
const form = new FormData(); const form = new FormData();
forOwn(request.data, (value, key) => { forOwn(request.data, (value, key) => {
if (value instanceof Array) {
each(value, (v) => form.append(key, v));
} else {
form.append(key, value); form.append(key, value);
}
}); });
extend(request.headers, form.getHeaders()); extend(request.headers, form.getHeaders());
request.data = form; request.data = form;