fix(AwsS3 Node): Fix handling of bucket with dot in name (#8475)

This commit is contained in:
कारतोफ्फेलस्क्रिप्ट™ 2024-01-30 17:05:59 +01:00 committed by GitHub
parent e643a126f4
commit 0febe62ad0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 13 additions and 15 deletions

View file

@ -300,7 +300,7 @@ export class AwsS3V2 implements INodeType {
headers['x-amz-request-payer'] = 'requester';
}
if (additionalFields.parentFolderKey) {
path = `/${additionalFields.parentFolderKey}${folderName}/`;
path = `${basePath}/${additionalFields.parentFolderKey}/${folderName}/`;
}
if (additionalFields.storageClass) {
headers['x-amz-storage-class'] = snakeCase(
@ -778,7 +778,7 @@ export class AwsS3V2 implements INodeType {
const additionalFields = this.getNodeParameter('additionalFields', i);
const tagsValues = (this.getNodeParameter('tagsUi', i) as IDataObject)
.tagsValues as IDataObject[];
let path = `${basePath}/`;
let path = `${basePath}/${fileName}`;
let body;
const multipartHeaders: IDataObject = {};
@ -788,9 +788,7 @@ export class AwsS3V2 implements INodeType {
neededHeaders['x-amz-request-payer'] = 'requester';
}
if (additionalFields.parentFolderKey) {
path = `${additionalFields.parentFolderKey}/${fileName}`;
} else {
path = `${fileName}`;
path = `${basePath}/${additionalFields.parentFolderKey}/${fileName}`;
}
if (additionalFields.storageClass) {
multipartHeaders['x-amz-storage-class'] = snakeCase(
@ -877,7 +875,7 @@ export class AwsS3V2 implements INodeType {
this,
servicePath,
'POST',
`/${path}?uploads`,
`${path}?uploads`,
body,
qs,
{ ...neededHeaders, ...multipartHeaders },
@ -899,7 +897,7 @@ export class AwsS3V2 implements INodeType {
this,
servicePath,
'PUT',
`/${path}?partNumber=${part}&uploadId=${uploadId}`,
`${path}?partNumber=${part}&uploadId=${uploadId}`,
chunk,
qs,
listHeaders,
@ -913,7 +911,7 @@ export class AwsS3V2 implements INodeType {
this,
servicePath,
'DELETE',
`/${path}?uploadId=${uploadId}`,
`${path}?uploadId=${uploadId}`,
);
} catch (err) {
throw new NodeOperationError(this.getNode(), err as Error);
@ -926,7 +924,7 @@ export class AwsS3V2 implements INodeType {
this,
servicePath,
'GET',
`/${path}?max-parts=${900}&part-number-marker=0&uploadId=${uploadId}`,
`${path}?max-parts=${900}&part-number-marker=0&uploadId=${uploadId}`,
'',
qs,
{ ...neededHeaders },
@ -978,7 +976,7 @@ export class AwsS3V2 implements INodeType {
this,
servicePath,
'POST',
`/${path}?uploadId=${uploadId}`,
`${path}?uploadId=${uploadId}`,
data,
qs,
{
@ -1015,7 +1013,7 @@ export class AwsS3V2 implements INodeType {
this,
servicePath,
'PUT',
`/${path || binaryPropertyData.fileName}`,
path,
body,
qs,
headers,
@ -1043,7 +1041,7 @@ export class AwsS3V2 implements INodeType {
this,
servicePath,
'PUT',
`/${path}`,
path,
body,
qs,
{ ...headers },

View file

@ -23,7 +23,7 @@
{
"parameters": {
"operation": "upload",
"bucketName": "bucket",
"bucketName": "buc.ket",
"fileName": "binary.json",
"additionalFields": {}
},

View file

@ -14,11 +14,11 @@ describe('Test S3 V2 Node', () => {
await initBinaryDataService();
nock.disableNetConnect();
mock = nock('https://bucket.s3.eu-central-1.amazonaws.com');
mock = nock('https://s3.eu-central-1.amazonaws.com/buc.ket');
});
beforeEach(async () => {
mock.get('/?location').reply(
mock.get('?location').reply(
200,
`<?xml version="1.0" encoding="UTF-8"?>
<LocationConstraint>