diff --git a/lib/api/bucketGet.js b/lib/api/bucketGet.js
index d4e7e1b81b..22dc78fb94 100644
--- a/lib/api/bucketGet.js
+++ b/lib/api/bucketGet.js
@@ -1,3 +1,4 @@
+const { promisify } = require('util');
const querystring = require('querystring');
const { errors, errorInstances, versioning, s3middleware } = require('arsenal');
const constants = require('../../constants');
@@ -8,14 +9,9 @@ const escapeForXml = s3middleware.escapeForXml;
const { pushMetric } = require('../utapi/utilities');
const versionIdUtils = versioning.VersionID;
const monitoring = require('../utilities/monitoringHandler');
-const { generateToken, decryptToken }
- = require('../api/apiUtils/object/continueToken');
+const { generateToken, decryptToken } = require('../api/apiUtils/object/continueToken');
-// do not url encode the continuation tokens
-const skipUrlEncoding = new Set([
- 'ContinuationToken',
- 'NextContinuationToken',
-]);
+const xmlParamsToSkipUrlEncoding = new Set(['ContinuationToken', 'NextContinuationToken']);
/* Sample XML response for GET bucket objects V2:
@@ -122,17 +118,16 @@ function processVersions(bucketName, listParams, list) {
{ tag: 'IsTruncated', value: isTruncated },
];
- const escapeXmlFn = listParams.encoding === 'url' ?
- querystring.escape : escapeForXml;
+ const escapeXmlFn = listParams.encoding === 'url' ? querystring.escape : escapeForXml;
xmlParams.forEach(p => {
if (p.value) {
const val = p.tag !== 'NextVersionIdMarker' || p.value === 'null' ?
- p.value : versionIdUtils.encode(p.value);
+ p.value :
+ versionIdUtils.encode(p.value);
xml.push(`<${p.tag}>${escapeXmlFn(val)}${p.tag}>`);
}
});
- let lastKey = listParams.keyMarker ?
- escapeXmlFn(listParams.keyMarker) : undefined;
+ let lastKey = listParams.keyMarker ? escapeXmlFn(listParams.keyMarker) : undefined;
list.Versions.forEach(item => {
const v = item.value;
const objectKey = escapeXmlFn(item.key);
@@ -143,7 +138,8 @@ function processVersions(bucketName, listParams, list) {
`${objectKey}`,
'',
(v.IsNull || v.VersionId === undefined) ?
- 'null' : versionIdUtils.encode(v.VersionId),
+ 'null'
+ : versionIdUtils.encode(v.VersionId),
'',
`${isLatest}`,
`${v.LastModified}`,
@@ -182,31 +178,19 @@ function processMasterVersions(bucketName, listParams, list) {
];
if (listParams.v2) {
- xmlParams.push(
- { tag: 'StartAfter', value: listParams.startAfter || '' });
- xmlParams.push(
- { tag: 'FetchOwner', value: `${listParams.fetchOwner}` });
- xmlParams.push({
- tag: 'ContinuationToken',
- value: generateToken(listParams.continuationToken) || '',
- });
- xmlParams.push({
- tag: 'NextContinuationToken',
- value: generateToken(list.NextContinuationToken),
- });
- xmlParams.push({
- tag: 'KeyCount',
- value: list.Contents ? list.Contents.length : 0,
- });
+ xmlParams.push({ tag: 'StartAfter', value: listParams.startAfter || '' });
+ xmlParams.push({ tag: 'FetchOwner', value: `${listParams.fetchOwner}` });
+ xmlParams.push({ tag: 'ContinuationToken', value: generateToken(listParams.continuationToken) || '', });
+ xmlParams.push({ tag: 'NextContinuationToken', value: generateToken(list.NextContinuationToken), });
+ xmlParams.push({ tag: 'KeyCount', value: list.Contents ? list.Contents.length : 0, });
} else {
xmlParams.push({ tag: 'Marker', value: listParams.marker || '' });
xmlParams.push({ tag: 'NextMarker', value: list.NextMarker });
}
- const escapeXmlFn = listParams.encoding === 'url' ?
- querystring.escape : escapeForXml;
+ const escapeXmlFn = listParams.encoding === 'url' ? querystring.escape : escapeForXml;
xmlParams.forEach(p => {
- if (p.value && skipUrlEncoding.has(p.tag)) {
+ if (p.value && xmlParamsToSkipUrlEncoding.has(p.tag)) {
xml.push(`<${p.tag}>${p.value}${p.tag}>`);
} else if (p.value || p.tag === 'KeyCount' || p.tag === 'MaxKeys') {
xml.push(`<${p.tag}>${escapeXmlFn(p.value)}${p.tag}>`);
@@ -246,15 +230,14 @@ function processMasterVersions(bucketName, listParams, list) {
);
});
list.CommonPrefixes.forEach(item => {
- const val = escapeXmlFn(item);
- xml.push(`${val}`);
+ xml.push(`${escapeXmlFn(item)}`);
});
xml.push('');
+
return xml.join('');
}
-function handleResult(listParams, requestMaxKeys, encoding, authInfo,
- bucketName, list, corsHeaders, log, callback) {
+function handleResult(listParams, requestMaxKeys, encoding, authInfo, bucketName, list, log) {
// eslint-disable-next-line no-param-reassign
listParams.maxKeys = requestMaxKeys;
// eslint-disable-next-line no-param-reassign
@@ -267,7 +250,7 @@ function handleResult(listParams, requestMaxKeys, encoding, authInfo,
}
pushMetric('listBucket', log, { authInfo, bucket: bucketName });
monitoring.promMetrics('GET', bucketName, '200', 'listBucket');
- return callback(null, res, corsHeaders);
+ return res;
}
/**
@@ -278,28 +261,25 @@ function handleResult(listParams, requestMaxKeys, encoding, authInfo,
* @param {function} log - Werelogs request logger
* @param {function} callback - callback to respond to http request
* with either error code or xml response body
- * @return {undefined}
+ * @return {Promise