1+ const { callbackify } = require ( 'util' ) ;
12const querystring = require ( 'querystring' ) ;
23const { errors, errorInstances, versioning, s3middleware } = require ( 'arsenal' ) ;
34const 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
389390module . exports = {
390391 processVersions,
391392 processMasterVersions,
392- bucketGet,
393+ bucketGet : callbackify ( bucketGet ) ,
393394} ;
394395
0 commit comments