From 248ccce5c3236068bf341bda613d6f436c2d4112 Mon Sep 17 00:00:00 2001 From: Jan Oberhauser Date: Wed, 2 Sep 2020 08:30:01 +0200 Subject: [PATCH] :zap: Minor improvements to S3-Node --- ...point.credentials.ts => S3.credentials.ts} | 6 +++--- .../nodes-base/nodes/S3/GenericFunctions.ts | 8 +++---- packages/nodes-base/nodes/S3/S3.node.ts | 20 +++++++++--------- packages/nodes-base/nodes/S3/generic-s3.png | Bin 5600 -> 0 bytes packages/nodes-base/nodes/S3/s3.png | Bin 0 -> 1145 bytes packages/nodes-base/package.json | 2 +- 6 files changed, 18 insertions(+), 18 deletions(-) rename packages/nodes-base/credentials/{CustomS3Endpoint.credentials.ts => S3.credentials.ts} (86%) delete mode 100644 packages/nodes-base/nodes/S3/generic-s3.png create mode 100644 packages/nodes-base/nodes/S3/s3.png diff --git a/packages/nodes-base/credentials/CustomS3Endpoint.credentials.ts b/packages/nodes-base/credentials/S3.credentials.ts similarity index 86% rename from packages/nodes-base/credentials/CustomS3Endpoint.credentials.ts rename to packages/nodes-base/credentials/S3.credentials.ts index 266a38fdd..9d5b08c19 100644 --- a/packages/nodes-base/credentials/CustomS3Endpoint.credentials.ts +++ b/packages/nodes-base/credentials/S3.credentials.ts @@ -4,9 +4,9 @@ import { } from 'n8n-workflow'; -export class CustomS3Endpoint implements ICredentialType { - name = 'customS3Endpoint'; - displayName = 'Custom S3'; +export class S3 implements ICredentialType { + name = 's3'; + displayName = 'S3'; properties = [ { displayName: 'S3 endpoint', diff --git a/packages/nodes-base/nodes/S3/GenericFunctions.ts b/packages/nodes-base/nodes/S3/GenericFunctions.ts index 093b7cfb7..19dbfa6df 100644 --- a/packages/nodes-base/nodes/S3/GenericFunctions.ts +++ b/packages/nodes-base/nodes/S3/GenericFunctions.ts @@ -23,7 +23,7 @@ import { import { IDataObject, - } from 'n8n-workflow'; +} from 'n8n-workflow'; import { URL } from 'url'; @@ -31,7 +31,7 @@ export async function s3ApiRequest(this: IHookFunctions | IExecuteFunctions | IL let credentials; - credentials = this.getCredentials('customS3Endpoint'); + credentials = this.getCredentials('s3'); if (credentials === undefined) { throw new Error('No credentials got returned!'); @@ -64,13 +64,13 @@ export async function s3ApiRequest(this: IHookFunctions | IExecuteFunctions | IL body }; - sign(signOpts, { accessKeyId: `${credentials.accessKeyId}`.trim(), secretAccessKey: `${credentials.secretAccessKey}`.trim()}); + sign(signOpts, { accessKeyId: `${credentials.accessKeyId}`.trim(), secretAccessKey: `${credentials.secretAccessKey}`.trim() }); const options: OptionsWithUri = { headers: signOpts.headers, method, qs: query, - uri: endpoint, + uri: endpoint.toString(), body: signOpts.body, }; diff --git a/packages/nodes-base/nodes/S3/S3.node.ts b/packages/nodes-base/nodes/S3/S3.node.ts index 4272adb5b..accb8494f 100644 --- a/packages/nodes-base/nodes/S3/S3.node.ts +++ b/packages/nodes-base/nodes/S3/S3.node.ts @@ -49,12 +49,12 @@ import { export class S3 implements INodeType { description: INodeTypeDescription = { displayName: 'S3', - name: 'S3', - icon: 'file:generic-s3.png', + name: 's3', + icon: 'file:s3.png', group: ['output'], version: 1, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', - description: 'Sends data to any S3-compatible services', + description: 'Sends data to any S3-compatible service', defaults: { name: 'S3', color: '#d05b4b', @@ -63,7 +63,7 @@ export class S3 implements INodeType { outputs: ['main'], credentials: [ { - name: 'customS3Endpoint', + name: 's3', required: true, }, ], @@ -117,7 +117,7 @@ export class S3 implements INodeType { let credentials; try { - credentials = this.getCredentials('customS3Endpoint'); + credentials = this.getCredentials('s3'); } catch (error) { throw new Error(error); } @@ -274,10 +274,10 @@ export class S3 implements INodeType { responseData = await s3ApiRequestSOAP.call(this, bucketName, 'DELETE', `/${folderKey}`, '', qs, {}, {}, region); - responseData = { deleted: [ { 'Key': folderKey } ] }; + responseData = { deleted: [{ 'Key': folderKey }] }; } else { - // delete everything inside the folder + // delete everything inside the folder const body: IDataObject = { Delete: { '$': { @@ -301,7 +301,7 @@ export class S3 implements INodeType { headers['Content-Type'] = 'application/xml'; - responseData = await s3ApiRequestSOAP.call(this, bucketName, 'POST', '/', data, { delete: '' } , headers, {}, region); + responseData = await s3ApiRequestSOAP.call(this, bucketName, 'POST', '/', data, { delete: '' }, headers, {}, region); responseData = { deleted: responseData.DeleteResult.Deleted }; } @@ -437,7 +437,7 @@ export class S3 implements INodeType { region = region.LocationConstraint._; - const response = await s3ApiRequestREST.call(this, bucketName, 'GET', `/${fileKey}`, '', qs, {}, { encoding: null, resolveWithFullResponse: true }, region); + const response = await s3ApiRequestREST.call(this, bucketName, 'GET', `/${fileKey}`, '', qs, {}, { encoding: null, resolveWithFullResponse: true }, region); let mimeType: string | undefined; if (response.headers['content-type']) { @@ -462,7 +462,7 @@ export class S3 implements INodeType { const data = Buffer.from(response.body as string, 'utf8'); - items[i].binary![dataPropertyNameDownload] = await this.helpers.prepareBinaryData(data as unknown as Buffer, fileName, mimeType); + items[i].binary![dataPropertyNameDownload] = await this.helpers.prepareBinaryData(data as unknown as Buffer, fileName, mimeType); } //https://docs.aws.amazon.com/AmazonS3/latest/API/API_DeleteObject.html if (operation === 'delete') { diff --git a/packages/nodes-base/nodes/S3/generic-s3.png b/packages/nodes-base/nodes/S3/generic-s3.png deleted file mode 100644 index 4f9faf6dd14612bf493cae796f551cab0d3d7e4e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5600 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 Z{BKgG*`&IS1(;(PJYD@<);T3K0RZlsCe#1` literal 0 HcmV?d00001 diff --git a/packages/nodes-base/package.json b/packages/nodes-base/package.json index 5c759a70a..02886773d 100644 --- a/packages/nodes-base/package.json +++ b/packages/nodes-base/package.json @@ -52,7 +52,7 @@ "dist/credentials/CopperApi.credentials.js", "dist/credentials/CalendlyApi.credentials.js", "dist/credentials/CustomerIoApi.credentials.js", - "dist/credentials/CustomS3Endpoint.credentials.js", + "dist/credentials/S3.credentials.js", "dist/credentials/CrateDb.credentials.js", "dist/credentials/DisqusApi.credentials.js", "dist/credentials/DriftApi.credentials.js",