feat(Webhook Node): Stream binary response in lastNode.firstEntryBinary mode (#6463)

This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™ 2023-06-19 13:54:56 +02:00 committed by GitHub
parent 8b50625fb1
commit 6ccab3eaaa
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 7 deletions

View file

@ -426,7 +426,7 @@ export async function executeWebhook(
const binaryData = (response.body as IDataObject)?.binaryData as IBinaryData;
if (binaryData?.id) {
res.header(response.headers);
const stream = NodeExecuteFunctions.getBinaryStream(binaryData.id);
const stream = BinaryDataManager.getInstance().getBinaryStream(binaryData.id);
void pipeline(stream, res).then(() =>
responseCallback(null, { noWebhookResponse: true }),
);
@ -643,10 +643,12 @@ export async function executeWebhook(
if (!didSendResponse) {
// Send the webhook response manually
res.setHeader('Content-Type', binaryData.mimeType);
const binaryDataBuffer = await BinaryDataManager.getInstance().retrieveBinaryData(
binaryData,
);
res.end(binaryDataBuffer);
if (binaryData.id) {
const stream = BinaryDataManager.getInstance().getBinaryStream(binaryData.id);
await pipeline(stream, res);
} else {
res.end(Buffer.from(binaryData.data, BINARY_ENCODING));
}
responseCallback(null, {
noWebhookResponse: true,

View file

@ -121,7 +121,7 @@ export class BinaryDataManager {
throw new Error('Storage mode used to store binary data not available');
}
async retrieveBinaryData(binaryData: IBinaryData): Promise<Buffer> {
async getBinaryDataBuffer(binaryData: IBinaryData): Promise<Buffer> {
if (binaryData.id) {
return this.retrieveBinaryDataByIdentifier(binaryData.id);
}

View file

@ -917,7 +917,7 @@ export async function getBinaryDataBuffer(
inputIndex: number,
): Promise<Buffer> {
const binaryData = inputData.main[inputIndex]![itemIndex]!.binary![propertyName]!;
return BinaryDataManager.getInstance().retrieveBinaryData(binaryData);
return BinaryDataManager.getInstance().getBinaryDataBuffer(binaryData);
}
/**