From 0d49ad8b93b71777d19253ececcb6e00b392735f Mon Sep 17 00:00:00 2001 From: agobrech <45268029+agobrech@users.noreply.github.com> Date: Wed, 8 Mar 2023 14:32:27 +0100 Subject: [PATCH] fix(core): Add a helper function to convert binary streams to buffers (no-changelog) (#5641) --- packages/core/src/BinaryDataManager/index.ts | 8 ++------ packages/core/src/BinaryDataManager/utils.ts | 8 ++++++++ packages/core/src/NodeExecuteFunctions.ts | 1 - 3 files changed, 10 insertions(+), 7 deletions(-) create mode 100644 packages/core/src/BinaryDataManager/utils.ts diff --git a/packages/core/src/BinaryDataManager/index.ts b/packages/core/src/BinaryDataManager/index.ts index a422ad4003..a019fdaddb 100644 --- a/packages/core/src/BinaryDataManager/index.ts +++ b/packages/core/src/BinaryDataManager/index.ts @@ -1,4 +1,3 @@ -import concatStream from 'concat-stream'; import { readFile, stat } from 'fs/promises'; import type { BinaryMetadata, IBinaryData, INodeExecutionData } from 'n8n-workflow'; import prettyBytes from 'pretty-bytes'; @@ -6,6 +5,7 @@ import type { Readable } from 'stream'; import { BINARY_ENCODING } from '../Constants'; import type { IBinaryDataConfig, IBinaryDataManager } from '../Interfaces'; import { BinaryDataFileSystem } from './FileSystem'; +import { binaryToBuffer } from './utils'; export class BinaryDataManager { static instance: BinaryDataManager | undefined; @@ -104,11 +104,7 @@ export class BinaryDataManager { fileSize, }); } else { - // Else fallback to storing this data in memory. - const buffer = await new Promise((resolve) => { - if (Buffer.isBuffer(input)) resolve(input); - else input.pipe(concatStream(resolve)); - }); + const buffer = await binaryToBuffer(input); binaryData.data = buffer.toString(BINARY_ENCODING); binaryData.fileSize = prettyBytes(buffer.length); } diff --git a/packages/core/src/BinaryDataManager/utils.ts b/packages/core/src/BinaryDataManager/utils.ts new file mode 100644 index 0000000000..85fb05f687 --- /dev/null +++ b/packages/core/src/BinaryDataManager/utils.ts @@ -0,0 +1,8 @@ +import concatStream from 'concat-stream'; +import type { Readable } from 'stream'; + +export const binaryToBuffer = async (body: Buffer | Readable) => + new Promise((resolve) => { + if (Buffer.isBuffer(body)) resolve(body); + else body.pipe(concatStream(resolve)); + }); diff --git a/packages/core/src/NodeExecuteFunctions.ts b/packages/core/src/NodeExecuteFunctions.ts index 96a752adcf..7d6b4648b2 100644 --- a/packages/core/src/NodeExecuteFunctions.ts +++ b/packages/core/src/NodeExecuteFunctions.ts @@ -149,7 +149,6 @@ const createFormDataObject = (data: Record) => { }); return formData; }; - function searchForHeader(headers: IDataObject, headerName: string) { if (headers === undefined) { return undefined;