Skip to content

Commit a76859f

Browse files
committed
Merge branch 'feature/CLDSRV-823/formatting-only' into q/9.3
2 parents 33b1987 + 041ccf7 commit a76859f

2 files changed

Lines changed: 39 additions & 77 deletions

File tree

lib/api/bucketGet.js

Lines changed: 26 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,9 @@ const escapeForXml = s3middleware.escapeForXml;
88
const { pushMetric } = require('../utapi/utilities');
99
const versionIdUtils = versioning.VersionID;
1010
const monitoring = require('../utilities/monitoringHandler');
11-
const { generateToken, decryptToken }
12-
= require('../api/apiUtils/object/continueToken');
11+
const { generateToken, decryptToken } = require('../api/apiUtils/object/continueToken');
1312

14-
// do not url encode the continuation tokens
15-
const skipUrlEncoding = new Set([
16-
'ContinuationToken',
17-
'NextContinuationToken',
18-
]);
13+
const xmlParamsToSkipUrlEncoding = new Set(['ContinuationToken', 'NextContinuationToken']);
1914

2015
/* Sample XML response for GET bucket objects V2:
2116
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
@@ -122,17 +117,16 @@ function processVersions(bucketName, listParams, list) {
122117
{ tag: 'IsTruncated', value: isTruncated },
123118
];
124119

125-
const escapeXmlFn = listParams.encoding === 'url' ?
126-
querystring.escape : escapeForXml;
120+
const escapeXmlFn = listParams.encoding === 'url' ? querystring.escape : escapeForXml;
127121
xmlParams.forEach(p => {
128122
if (p.value) {
129123
const val = p.tag !== 'NextVersionIdMarker' || p.value === 'null' ?
130-
p.value : versionIdUtils.encode(p.value);
124+
p.value :
125+
versionIdUtils.encode(p.value);
131126
xml.push(`<${p.tag}>${escapeXmlFn(val)}</${p.tag}>`);
132127
}
133128
});
134-
let lastKey = listParams.keyMarker ?
135-
escapeXmlFn(listParams.keyMarker) : undefined;
129+
let lastKey = listParams.keyMarker ? escapeXmlFn(listParams.keyMarker) : undefined;
136130
list.Versions.forEach(item => {
137131
const v = item.value;
138132
const objectKey = escapeXmlFn(item.key);
@@ -144,7 +138,8 @@ function processVersions(bucketName, listParams, list) {
144138
`<Key>${objectKey}</Key>`,
145139
'<VersionId>',
146140
(v.IsNull || v.VersionId === undefined) ?
147-
'null' : versionIdUtils.encode(v.VersionId),
141+
'null'
142+
: versionIdUtils.encode(v.VersionId),
148143
'</VersionId>',
149144
`<IsLatest>${isLatest}</IsLatest>`,
150145
`<LastModified>${v.LastModified}</LastModified>`,
@@ -186,31 +181,19 @@ function processMasterVersions(bucketName, listParams, list) {
186181
];
187182

188183
if (listParams.v2) {
189-
xmlParams.push(
190-
{ tag: 'StartAfter', value: listParams.startAfter || '' });
191-
xmlParams.push(
192-
{ tag: 'FetchOwner', value: `${listParams.fetchOwner}` });
193-
xmlParams.push({
194-
tag: 'ContinuationToken',
195-
value: generateToken(listParams.continuationToken) || '',
196-
});
197-
xmlParams.push({
198-
tag: 'NextContinuationToken',
199-
value: generateToken(list.NextContinuationToken),
200-
});
201-
xmlParams.push({
202-
tag: 'KeyCount',
203-
value: list.Contents ? list.Contents.length : 0,
204-
});
184+
xmlParams.push({ tag: 'StartAfter', value: listParams.startAfter || '' });
185+
xmlParams.push({ tag: 'FetchOwner', value: `${listParams.fetchOwner}` });
186+
xmlParams.push({ tag: 'ContinuationToken', value: generateToken(listParams.continuationToken) || '' });
187+
xmlParams.push({ tag: 'NextContinuationToken', value: generateToken(list.NextContinuationToken) });
188+
xmlParams.push({ tag: 'KeyCount', value: list.Contents ? list.Contents.length : 0 });
205189
} else {
206190
xmlParams.push({ tag: 'Marker', value: listParams.marker || '' });
207191
xmlParams.push({ tag: 'NextMarker', value: list.NextMarker });
208192
}
209193

210-
const escapeXmlFn = listParams.encoding === 'url' ?
211-
querystring.escape : escapeForXml;
194+
const escapeXmlFn = listParams.encoding === 'url' ? querystring.escape : escapeForXml;
212195
xmlParams.forEach(p => {
213-
if (p.value && skipUrlEncoding.has(p.tag)) {
196+
if (p.value && xmlParamsToSkipUrlEncoding.has(p.tag)) {
214197
xml.push(`<${p.tag}>${p.value}</${p.tag}>`);
215198
} else if (p.value || p.tag === 'KeyCount' || p.tag === 'MaxKeys') {
216199
xml.push(`<${p.tag}>${escapeXmlFn(p.value)}</${p.tag}>`);
@@ -255,10 +238,10 @@ function processMasterVersions(bucketName, listParams, list) {
255238
);
256239
});
257240
list.CommonPrefixes.forEach(item => {
258-
const val = escapeXmlFn(item);
259-
xml.push(`<CommonPrefixes><Prefix>${val}</Prefix></CommonPrefixes>`);
241+
xml.push(`<CommonPrefixes><Prefix>${escapeXmlFn(item)}</Prefix></CommonPrefixes>`);
260242
});
261243
xml.push('</ListBucketResult>');
244+
262245
return xml.join('');
263246
}
264247

@@ -349,17 +332,13 @@ function bucketGet(authInfo, request, log, callback) {
349332
'List Type specified in Request'));
350333
}
351334
if (v2) {
352-
log.addDefaultFields({
353-
action: 'ListObjectsV2',
354-
});
335+
log.addDefaultFields({ action: 'ListObjectsV2' });
355336
if (request.serverAccessLog) {
356337
// eslint-disable-next-line no-param-reassign
357338
request.serverAccessLog.analyticsAction = 'ListObjectsV2';
358339
}
359340
} else if (params.versions !== undefined) {
360-
log.addDefaultFields({
361-
action: 'ListObjectVersions',
362-
});
341+
log.addDefaultFields({ action: 'ListObjectVersions' });
363342
if (request.serverAccessLog) {
364343
// eslint-disable-next-line no-param-reassign
365344
request.serverAccessLog.analyticsAction = 'ListObjectVersions';
@@ -368,16 +347,14 @@ function bucketGet(authInfo, request, log, callback) {
368347
log.debug('processing request', { method: 'bucketGet' });
369348
const encoding = params['encoding-type'];
370349
if (encoding !== undefined && encoding !== 'url') {
371-
monitoring.promMetrics(
372-
'GET', bucketName, 400, 'listBucket');
350+
monitoring.promMetrics('GET', bucketName, 400, 'listBucket');
373351
return callback(errorInstances.InvalidArgument.customizeDescription('Invalid ' +
374352
'Encoding Method specified in Request'));
375353
}
376-
const requestMaxKeys = params['max-keys'] ?
377-
Number.parseInt(params['max-keys'], 10) : 1000;
354+
355+
const requestMaxKeys = params['max-keys'] ? Number.parseInt(params['max-keys'], 10) : 1000;
378356
if (Number.isNaN(requestMaxKeys) || requestMaxKeys < 0) {
379-
monitoring.promMetrics(
380-
'GET', bucketName, 400, 'listBucket');
357+
monitoring.promMetrics('GET', bucketName, 400, 'listBucket');
381358
return callback(errors.InvalidArgument);
382359
}
383360
// AWS only returns 1000 keys even if max keys are greater.
@@ -405,8 +382,7 @@ function bucketGet(authInfo, request, log, callback) {
405382
if (v2) {
406383
listParams.v2 = true;
407384
listParams.startAfter = params['start-after'];
408-
listParams.continuationToken =
409-
decryptToken(params['continuation-token']);
385+
listParams.continuationToken = decryptToken(params['continuation-token']);
410386
listParams.fetchOwner = params['fetch-owner'] === 'true';
411387
} else {
412388
listParams.marker = params.marker;
@@ -426,7 +402,8 @@ function bucketGet(authInfo, request, log, callback) {
426402
delete listParams.marker;
427403
listParams.keyMarker = params['key-marker'];
428404
listParams.versionIdMarker = params['version-id-marker'] ?
429-
versionIdUtils.decode(params['version-id-marker']) : undefined;
405+
versionIdUtils.decode(params['version-id-marker']) :
406+
undefined;
430407
}
431408

432409
if (!requestMaxKeys) {

lib/api/objectGetLegalHold.js

Lines changed: 13 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -25,16 +25,12 @@ function objectGetLegalHold(authInfo, request, log, callback) {
2525

2626
const decodedVidResult = decodeVersionId(query);
2727
if (decodedVidResult instanceof Error) {
28-
log.trace('invalid versionId query', {
29-
versionId: query.versionId,
30-
error: decodedVidResult,
31-
});
28+
log.trace('invalid versionId query', { versionId: query.versionId, error: decodedVidResult });
3229
return process.nextTick(() => callback(decodedVidResult));
3330
}
3431
const versionId = decodedVidResult;
3532

36-
// FIXME pass 'getDeleteMarker: true' option to set
37-
// 'x-amz-delete-marker' header (see S3C-7592)
33+
// FIXME pass 'getDeleteMarker: true' option to set 'x-amz-delete-marker' header (see S3C-7592)
3834
const metadataValParams = {
3935
authInfo,
4036
bucketName,
@@ -48,34 +44,26 @@ function objectGetLegalHold(authInfo, request, log, callback) {
4844
next => standardMetadataValidateBucketAndObj(metadataValParams, request.actionImplicitDenies, log,
4945
(err, bucket, objectMD) => {
5046
if (err) {
51-
log.trace('request authorization failed',
52-
{ method: 'objectGetLegalHold', error: err });
47+
log.trace('request authorization failed', { method: 'objectGetLegalHold', error: err });
5348
return next(err);
5449
}
5550
if (!objectMD) {
56-
const err = versionId ? errors.NoSuchVersion :
57-
errors.NoSuchKey;
58-
log.trace('error no object metadata found',
59-
{ method: 'objectGetLegalHold', error: err });
51+
const err = versionId ? errors.NoSuchVersion : errors.NoSuchKey;
52+
log.trace('error no object metadata found', { method: 'objectGetLegalHold', error: err });
6053
return next(err, bucket);
6154
}
6255
if (objectMD.isDeleteMarker) {
6356
if (versionId) {
64-
log.trace('requested version is delete marker',
65-
{ method: 'objectGetLegalHold' });
66-
// FIXME we should return a `x-amz-delete-marker: true` header,
67-
// see S3C-7592
57+
log.trace('requested version is delete marker', { method: 'objectGetLegalHold' });
58+
// FIXME we should return a `x-amz-delete-marker: true` header, see S3C-7592
6859
return next(errors.MethodNotAllowed);
6960
}
70-
log.trace('most recent version is delete marker',
71-
{ method: 'objectGetLegalHold' });
72-
// FIXME we should return a `x-amz-delete-marker: true` header,
73-
// see S3C-7592
61+
log.trace('most recent version is delete marker', { method: 'objectGetLegalHold' });
62+
// FIXME we should return a `x-amz-delete-marker: true` header, see S3C-7592
7463
return next(errors.NoSuchKey);
7564
}
7665
if (!bucket.isObjectLockEnabled()) {
77-
log.trace('object lock not enabled on bucket',
78-
{ method: 'objectGetRetention' });
66+
log.trace('object lock not enabled on bucket', { method: 'objectGetRetention' });
7967
return next(errorInstances.InvalidRequest.customizeDescription(
8068
'Bucket is missing Object Lock Configuration'));
8169
}
@@ -90,11 +78,9 @@ function objectGetLegalHold(authInfo, request, log, callback) {
9078
return next(null, bucket, xml, objectMD);
9179
},
9280
], (err, bucket, xml, objectMD) => {
93-
const additionalResHeaders = collectCorsHeaders(request.headers.origin,
94-
request.method, bucket);
81+
const additionalResHeaders = collectCorsHeaders(request.headers.origin, request.method, bucket);
9582
if (err) {
96-
log.trace('error processing request', { error: err,
97-
method: 'objectGetLegalHold' });
83+
log.trace('error processing request', { error: err, method: 'objectGetLegalHold' });
9884
} else {
9985
pushMetric('getObjectLegalHold', log, {
10086
authInfo,
@@ -104,8 +90,7 @@ function objectGetLegalHold(authInfo, request, log, callback) {
10490
location: objectMD ? objectMD.dataStoreName : undefined,
10591
});
10692
const verCfg = bucket.getVersioningConfiguration();
107-
additionalResHeaders['x-amz-version-id'] =
108-
getVersionIdResHeader(verCfg, objectMD);
93+
additionalResHeaders['x-amz-version-id'] = getVersionIdResHeader(verCfg, objectMD);
10994
}
11095
return callback(err, xml, additionalResHeaders);
11196
});

0 commit comments

Comments
 (0)