1+ const { promisify } = require ( 'util' ) ;
12const querystring = require ( 'querystring' ) ;
23const { errors, errorInstances, versioning, s3middleware } = require ( 'arsenal' ) ;
34const constants = require ( '../../constants' ) ;
@@ -252,22 +253,6 @@ function handleResult(listParams, requestMaxKeys, encoding, authInfo, bucketName
252253 return res ;
253254}
254255
255- const validateBucket = ( params , denials , log ) => new Promise ( resolve => {
256- standardMetadataValidateBucket ( params , denials , log , ( error , bucket ) => {
257- resolve ( { error, bucket } ) ;
258- } ) ;
259- } ) ;
260-
261- const getObjectListing = ( bucketName , listParams , log ) => new Promise ( ( resolve , reject ) => {
262- services . getObjectListing ( bucketName , listParams , log , ( err , list ) => {
263- if ( err ) {
264- return reject ( err ) ;
265- }
266-
267- return resolve ( list ) ;
268- } ) ;
269- } ) ;
270-
271256/**
272257 * bucketGet - Return list of objects in bucket, supports v1 & v2
273258 * @param {AuthInfo } authInfo - Instance of AuthInfo class with
@@ -276,7 +261,7 @@ const getObjectListing = (bucketName, listParams, log) => new Promise((resolve,
276261 * @param {function } log - Werelogs request logger
277262 * @param {function } callback - callback to respond to http request
278263 * with either error code or xml response body
279- * @return {undefined }
264+ * @return {Promise<object> } - object containing xml and additionalResHeaders
280265 */
281266async function bucketGet ( authInfo , request , log ) {
282267 const params = request . query ;
@@ -339,7 +324,16 @@ async function bucketGet(authInfo, request, log) {
339324 listParams . marker = params . marker ;
340325 }
341326
342- const { error, bucket } = await validateBucket ( metadataValParams , request . actionImplicitDenies , log ) ;
327+ let error ;
328+ let bucket ;
329+
330+ try {
331+ const standardMetadataValidateBucketPromised = promisify ( standardMetadataValidateBucket ) ;
332+ bucket = await standardMetadataValidateBucketPromised ( metadataValParams , request . actionImplicitDenies , log ) ;
333+ } catch ( err ) {
334+ error = err ;
335+ }
336+
343337 const corsHeaders = collectCorsHeaders ( request . headers . origin , request . method , bucket ) ;
344338
345339 if ( error ) {
@@ -369,7 +363,7 @@ async function bucketGet(authInfo, request, log) {
369363
370364 let list ;
371365 try {
372- list = await getObjectListing ( bucketName , listParams , log ) ;
366+ list = await promisify ( services . getObjectListing ) ( bucketName , listParams , log ) ;
373367 } catch ( err ) {
374368 log . debug ( 'error processing request' , { error : err } ) ;
375369 monitoring . promMetrics ( 'GET' , bucketName , err . code , 'listBucket' ) ;
@@ -391,7 +385,7 @@ module.exports = {
391385
392386 bucketGet ( ...argsWithoutCallback )
393387 . then ( result => callback ( null , ...result ) )
394- . catch ( callback ) ;
388+ . catch ( err => callback ( err , null , err . additionalResHeaders ) ) ;
395389 } ,
396390} ;
397391
0 commit comments