From 466187fd5288bef07b464118c88b88c84aca4ef7 Mon Sep 17 00:00:00 2001 From: Phil Kunz Date: Sun, 27 Oct 2019 14:32:27 +0100 Subject: [PATCH] fix(core): update --- ts/smartrequest.formdata.ts | 33 ++++++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/ts/smartrequest.formdata.ts b/ts/smartrequest.formdata.ts index 5d0a806..c81a3c7 100644 --- a/ts/smartrequest.formdata.ts +++ b/ts/smartrequest.formdata.ts @@ -8,18 +8,33 @@ import { request } from './smartrequest.request'; export interface IFormField { name: string; type: 'string' | 'filePath' | 'Buffer'; - payload: string; + payload: string | Buffer; + fileName?: string; } const appendFormField = async (formDataArg: plugins.formData, formDataField: IFormField) => { - if (formDataField.type === 'filePath') { - const fileData = plugins.fs.readFileSync( - plugins.path.join(process.cwd(), formDataField.payload) - ); - formDataArg.append('file', fileData, { - filename: 'upload.pdf', - contentType: 'application/pdf' - }); + switch (formDataField.type) { + case 'string': + formDataArg.append(formDataField.name, formDataField.payload); + break; + case 'filePath': + if (typeof formDataField.payload !== 'string') { + throw new Error(`Payload for key ${formDataField.name} must be of type string. Got ${typeof formDataField.payload} instead.`); + } + const fileData = plugins.fs.readFileSync( + plugins.path.join(process.cwd(), formDataField.payload) + ); + formDataArg.append('file', fileData, { + filename: formDataField.fileName ? formDataField.fileName : 'upload.pdf', + contentType: 'application/pdf' + }); + break; + case 'Buffer': + formDataArg.append('file', formDataField.payload, { + filename: formDataField.fileName ? formDataField.fileName : 'upload.pdf', + contentType: 'application/pdf' + }); + break; } };