mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-20 03:12:15 +00:00
* 👕 Enable `consistent-type-imports` for nodes-base * 👕 Apply to nodes-base * ⏪ Undo unrelated changes * 🚚 Move to `.eslintrc.js` in nodes-base * ⏪ Revert "Enable `consistent-type-imports` for nodes-base" This reverts commit 529ad72b051478fa1633aaf84b2864f2fdc7613c. * 👕 Fix severity
60 lines
1.7 KiB
TypeScript
60 lines
1.7 KiB
TypeScript
import type { IExecuteFunctions } from 'n8n-core';
|
|
|
|
import type { IDataObject, INodeExecutionData } from 'n8n-workflow';
|
|
|
|
import { apiRequest } from '../../../transport';
|
|
|
|
export async function download(this: IExecuteFunctions, index: number) {
|
|
const body: IDataObject = {};
|
|
const requestMethod = 'GET';
|
|
const items = this.getInputData();
|
|
|
|
//meta data
|
|
const fileId: string = this.getNodeParameter('fileId', index) as string;
|
|
const output: string = this.getNodeParameter('output', index) as string;
|
|
|
|
//endpoint
|
|
const endpoint = `files/${fileId}/`;
|
|
|
|
//response
|
|
const response = await apiRequest.call(this, requestMethod, endpoint, body, {} as IDataObject, {
|
|
encoding: null,
|
|
json: false,
|
|
resolveWithFullResponse: true,
|
|
});
|
|
|
|
let mimeType = response.headers['content-type'] as string | undefined;
|
|
mimeType = mimeType ? mimeType.split(';').find((value) => value.includes('/')) : undefined;
|
|
const contentDisposition = response.headers['content-disposition'];
|
|
const fileNameRegex = /(?<=filename=").*\b/;
|
|
const match = fileNameRegex.exec(contentDisposition);
|
|
let fileName = '';
|
|
|
|
// file name was found
|
|
if (match !== null) {
|
|
fileName = match[0];
|
|
}
|
|
|
|
const newItem: INodeExecutionData = {
|
|
json: items[index].json,
|
|
binary: {},
|
|
};
|
|
|
|
if (items[index].binary !== undefined && newItem.binary) {
|
|
// Create a shallow copy of the binary data so that the old
|
|
// data references which do not get changed still stay behind
|
|
// but the incoming data does not get changed.
|
|
Object.assign(newItem.binary, items[index].binary);
|
|
}
|
|
|
|
newItem.binary = {
|
|
[output]: await this.helpers.prepareBinaryData(
|
|
response.body as unknown as Buffer,
|
|
fileName,
|
|
mimeType,
|
|
),
|
|
};
|
|
|
|
return this.prepareOutputData(newItem as unknown as INodeExecutionData[]);
|
|
}
|