Feature/paired item support (#3869)

* Add paired item helper and implement it in some nodes
This commit is contained in:
Omar Ajoue
2022-08-30 17:55:33 +02:00
committed by GitHub
parent 087d3f99f1
commit b2c674591c
150 changed files with 4027 additions and 1625 deletions

View File

@@ -81,7 +81,7 @@ export class S3 implements INodeType {
async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
const items = this.getInputData();
const returnData: IDataObject[] = [];
const returnData: INodeExecutionData[] = [];
const qs: IDataObject = {};
let responseData;
const resource = this.getNodeParameter('resource', 0) as string;
@@ -155,7 +155,12 @@ export class S3 implements INodeType {
headers,
);
returnData.push({ success: true });
const executionData = this.helpers.constructExecutionMetaData(
this.helpers.returnJsonArray({ success: true }),
{ itemData: { item: i } },
);
returnData.push(...executionData);
// returnData.push({ success: true });
}
//https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListBuckets.html
if (operation === 'getAll') {
@@ -250,11 +255,17 @@ export class S3 implements INodeType {
);
responseData = responseData.ListBucketResult.Contents;
}
if (Array.isArray(responseData)) {
returnData.push.apply(returnData, responseData);
} else {
returnData.push(responseData);
}
const executionData = this.helpers.constructExecutionMetaData(
this.helpers.returnJsonArray(responseData),
{ itemData: { item: i } },
);
returnData.push(...executionData);
// if (Array.isArray(responseData)) {
// returnData.push.apply(returnData, responseData);
// } else {
// returnData.push(responseData);
// }
}
}
if (resource === 'folder') {
@@ -282,18 +293,13 @@ export class S3 implements INodeType {
const region = responseData.LocationConstraint._;
responseData = await s3ApiRequestSOAP.call(
this,
bucketName,
'PUT',
path,
'',
qs,
headers,
{},
region,
responseData = await s3ApiRequestSOAP.call(this, bucketName, 'PUT', path, '', qs, headers, {}, region);
const executionData = this.helpers.constructExecutionMetaData(
this.helpers.returnJsonArray({success: true}),
{ itemData: { item: i } },
);
returnData.push({ success: true });
returnData.push(...executionData);
// returnData.push({ success: true });
}
//https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObjects.html
if (operation === 'delete') {
@@ -373,7 +379,12 @@ export class S3 implements INodeType {
responseData = { deleted: responseData.DeleteResult.Deleted };
}
returnData.push(responseData);
const executionData = this.helpers.constructExecutionMetaData(
this.helpers.returnJsonArray(responseData),
{ itemData: { item: i } },
);
returnData.push(...executionData);
}
//https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html
if (operation === 'getAll') {
@@ -433,8 +444,13 @@ export class S3 implements INodeType {
if (qs.limit) {
responseData = responseData.splice(0, qs.limit as number);
}
returnData.push.apply(returnData, responseData);
}
const executionData = this.helpers.constructExecutionMetaData(
this.helpers.returnJsonArray(responseData),
{ itemData: { item: i } },
);
returnData.push(...executionData);
}
}
if (resource === 'file') {
@@ -541,7 +557,12 @@ export class S3 implements INodeType {
{},
region,
);
returnData.push(responseData.CopyObjectResult);
const executionData = this.helpers.constructExecutionMetaData(
this.helpers.returnJsonArray(responseData.CopyObjectResult),
{ itemData: { item: i } },
);
returnData.push(...executionData);
// returnData.push(responseData.CopyObjectResult);
}
//https://docs.aws.amazon.com/AmazonS3/latest/API/API_GetObject.html
if (operation === 'download') {
@@ -590,7 +611,7 @@ export class S3 implements INodeType {
// 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[i].binary);
Object.assign(newItem.binary!, items[i].binary);
}
items[i] = newItem;
@@ -638,7 +659,12 @@ export class S3 implements INodeType {
region,
);
returnData.push({ success: true });
const executionData = this.helpers.constructExecutionMetaData(
this.helpers.returnJsonArray({success: true}),
{ itemData: { item: i } },
);
returnData.push(...executionData);
// returnData.push({ success: true });
}
//https://docs.aws.amazon.com/AmazonS3/latest/API/API_ListObjectsV2.html
if (operation === 'getAll') {
@@ -700,8 +726,13 @@ export class S3 implements INodeType {
if (qs.limit) {
responseData = responseData.splice(0, qs.limit as number);
}
returnData.push.apply(returnData, responseData);
}
const executionData = this.helpers.constructExecutionMetaData(
this.helpers.returnJsonArray(responseData),
{ itemData: { item: i } },
);
returnData.push(...executionData);
}
//https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html
if (operation === 'upload') {
@@ -849,7 +880,13 @@ export class S3 implements INodeType {
region,
);
}
returnData.push({ success: true });
const executionData = this.helpers.constructExecutionMetaData(
this.helpers.returnJsonArray({success: true}),
{ itemData: { item: i } },
);
returnData.push(...executionData);
// returnData.push({ success: true });
}
}
} catch (error) {
@@ -857,7 +894,12 @@ export class S3 implements INodeType {
if (resource === 'file' && operation === 'download') {
items[i].json = { error: error.message };
} else {
returnData.push({ error: error.message });
const executionData = this.helpers.constructExecutionMetaData(
this.helpers.returnJsonArray({error: error.message}),
{ itemData: { item: i } },
);
returnData.push(...executionData);
// returnData.push({ error: error.message });
}
continue;
}
@@ -867,8 +909,8 @@ export class S3 implements INodeType {
if (resource === 'file' && operation === 'download') {
// For file downloads the files get attached to the existing items
return this.prepareOutputData(items);
} else {
return [this.helpers.returnJsonArray(returnData)];
}
return this.prepareOutputData(returnData);
}
}