Skip to content

Commit 717e694

Browse files
committed
♻️ use callbackify instead of manual callback
Issue: CLDSRV-823
1 parent 4e7d644 commit 717e694

File tree

2 files changed

+21
-19
lines changed

2 files changed

+21
-19
lines changed

lib/api/bucketGet.js

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
const { callbackify } = require('util');
12
const querystring = require('querystring');
23
const { errors, errorInstances, versioning, s3middleware } = require('arsenal');
34
const constants = require('../../constants');
@@ -277,16 +278,14 @@ const getObjectListing = (bucketName, listParams, log) => new Promise((resolve,
277278
* with either error code or xml response body
278279
* @return {undefined}
279280
*/
280-
async function bucketGet(authInfo, request, log, callback) {
281+
async function bucketGet(authInfo, request, log) {
281282
try {
282283
const params = request.query;
283284
const bucketName = request.bucketName;
284285
const v2 = params['list-type'];
285286

286287
if (v2 !== undefined && Number.parseInt(v2, 10) !== 2) {
287-
return callback(errorInstances.InvalidArgument.customizeDescription(
288-
'Invalid List Type specified in Request'
289-
));
288+
throw errorInstances.InvalidArgument.customizeDescription('Invalid List Type specified in Request');
290289
}
291290

292291
if (v2) {
@@ -306,14 +305,13 @@ async function bucketGet(authInfo, request, log, callback) {
306305
const encoding = params['encoding-type'];
307306
if (encoding !== undefined && encoding !== 'url') {
308307
monitoring.promMetrics('GET', bucketName, 400, 'listBucket');
309-
return callback(errorInstances.InvalidArgument.customizeDescription(
310-
'Invalid Encoding Method specified in Request'
311-
));
308+
throw errorInstances.InvalidArgument.customizeDescription('Invalid Encoding Type specified in Request');
312309
}
310+
313311
const requestMaxKeys = params['max-keys'] ? Number.parseInt(params['max-keys'], 10) : 1000;
314312
if (Number.isNaN(requestMaxKeys) || requestMaxKeys < 0) {
315313
monitoring.promMetrics('GET', bucketName, 400, 'listBucket');
316-
return callback(errors.InvalidArgument);
314+
throw errors.InvalidArgument;
317315
}
318316
const actualMaxKeys = Math.min(constants.listingHardLimit, requestMaxKeys);
319317

@@ -348,7 +346,8 @@ async function bucketGet(authInfo, request, log, callback) {
348346
if (error) {
349347
log.debug('error processing request', { error });
350348
monitoring.promMetrics('GET', bucketName, error.code, 'listBucket');
351-
return callback(error, null, corsHeaders);
349+
error.additionalResHeaders = corsHeaders;
350+
throw error;
352351
}
353352
if (params.versions !== undefined) {
354353
listParams.listingType = 'DelimiterVersions';
@@ -366,7 +365,7 @@ async function bucketGet(authInfo, request, log, callback) {
366365
IsTruncated: false,
367366
};
368367
const res = handleResult(listParams, requestMaxKeys, encoding, authInfo, bucketName, emptyList, log);
369-
return callback(null, res, corsHeaders);
368+
return [res, corsHeaders];
370369
}
371370

372371
let list;
@@ -375,20 +374,22 @@ async function bucketGet(authInfo, request, log, callback) {
375374
} catch (err) {
376375
log.debug('error processing request', { error: err });
377376
monitoring.promMetrics('GET', bucketName, err.code, 'listBucket');
378-
return callback(err, null, corsHeaders);
377+
378+
err.additionalResHeaders = corsHeaders;
379+
throw err;
379380
}
380381

381382
const res = handleResult(listParams, requestMaxKeys, encoding, authInfo, bucketName, list, log);
382-
return callback(null, res, corsHeaders);
383+
return [res, corsHeaders];
383384
} catch (err) {
384385
log.error('unhandled error in bucketGet', { error: err });
385-
return callback(errors.InternalError);
386+
throw errors.InternalError;
386387
}
387388
}
388389

389390
module.exports = {
390391
processVersions,
391392
processMasterVersions,
392-
bucketGet,
393+
bucketGet: callbackify(bucketGet),
393394
};
394395

lib/api/objectGetLegalHold.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
const { callbackify } = require('util');
12
const { errors, errorInstances, s3middleware } = require('arsenal');
23

34
const { decodeVersionId, getVersionIdResHeader }
@@ -16,15 +17,15 @@ const { convertToXml } = s3middleware.objectLegalHold;
1617
* @param {object} log - Werelogs logger
1718
* @return {Promise<object>} - object containing xml and additionalResHeaders
1819
*/
19-
async function objectGetLegalHold(authInfo, request, log, callback) {
20+
async function objectGetLegalHold(authInfo, request, log) {
2021
log.debug('processing request', { method: 'objectGetLegalHold' });
2122

2223
const { bucketName, objectKey, query } = request;
2324

2425
const decodedVidResult = decodeVersionId(query);
2526
if (decodedVidResult instanceof Error) {
2627
log.trace('invalid versionId query', { versionId: query.versionId, error: decodedVidResult });
27-
return process.nextTick(() => callback(decodedVidResult));
28+
throw decodedVidResult;
2829
}
2930
const versionId = decodedVidResult;
3031

@@ -95,12 +96,12 @@ async function objectGetLegalHold(authInfo, request, log, callback) {
9596
const verCfg = bucket.getVersioningConfiguration();
9697
additionalResHeaders['x-amz-version-id'] = getVersionIdResHeader(verCfg, objectMD);
9798

98-
return callback(null, xml, additionalResHeaders);
99+
return [xml, additionalResHeaders];
99100
} catch (err) {
100101
const additionalResHeaders = collectCorsHeaders(request.headers.origin, request.method, bucket);
101102
err.additionalResHeaders = additionalResHeaders;
102-
return callback(err);
103+
throw err;
103104
}
104105
}
105106

106-
module.exports = objectGetLegalHold;
107+
module.exports = callbackify(objectGetLegalHold);

0 commit comments

Comments
 (0)