11const { metadataValidateBucket } = require ( '../metadata/metadataUtils' ) ;
2- const util = require ( 'node:util' ) ;
32const collectCorsHeaders = require ( '../utilities/collectCorsHeaders' ) ;
43const { checkExpectedBucketOwner } = require ( './apiUtils/authorization/bucketOwner' ) ;
54const { pushMetric } = require ( '../utapi/utilities' ) ;
65const monitoring = require ( '../utilities/monitoringHandler' ) ;
76const { errors, s3middleware } = require ( 'arsenal' ) ;
7+ const { waterfall } = require ( 'async' ) ;
88const escapeForXml = s3middleware . escapeForXml ;
99
1010// Sample XML response:
@@ -60,43 +60,39 @@ function tagsToXml(tags) {
6060 * with either error code or xml response body
6161 * @return {undefined }
6262 */
63- async function bucketGetTagging ( authInfo , request , log , callback ) {
63+ function bucketGetTagging ( authInfo , request , log , callback ) {
6464 log . debug ( 'processing request' , { method : 'bucketGetTagging' } ) ;
6565
6666 const { bucketName, headers } = request ;
67- const metadataValidateBucketPromise = util . promisify ( metadataValidateBucket ) ;
68- const checkExpectedBucketOwnerPromise = util . promisify ( checkExpectedBucketOwner ) ;
69-
7067 const metadataValParams = {
7168 authInfo,
7269 bucketName,
7370 requestType : 'bucketGetTagging' ,
7471 request,
7572 } ;
76-
77- let bucket ;
73+ let bucket = null ;
7874 let xml = null ;
75+ let tags = null ;
7976
80- try {
81- bucket = await metadataValidateBucketPromise ( metadataValParams , log ) ;
82- // eslint-disable-next-line no-unused-expressions
83- await checkExpectedBucketOwnerPromise ( headers , bucket , log ) ;
84- const tags = bucket . getTags ( ) ;
85- if ( ! tags || ! tags . length ) {
86- log . debug ( 'bucket TagSet does not exist' , {
87- method : 'bucketGetTagging' ,
88- } ) ;
89- throw errors . NoSuchTagSet ;
77+ return waterfall ( [
78+ next => metadataValidateBucket ( metadataValParams , log ,
79+ ( err , b ) => {
80+ bucket = b ;
81+ return next ( err ) ;
82+ } ) ,
83+ next => checkExpectedBucketOwner ( headers , bucket , log , next ) ,
84+ next => {
85+ tags = bucket . getTags ( ) ;
86+ if ( ! tags || ! tags . length ) {
87+ log . debug ( 'bucket TagSet does not exist' , {
88+ method : 'bucketGetTagging' ,
89+ } ) ;
90+ return next ( errors . NoSuchTagSet ) ;
91+ }
92+ xml = tagsToXml ( tags ) ;
93+ return next ( ) ;
9094 }
91- xml = tagsToXml ( tags ) ;
92- pushMetric ( 'getBucketTagging' , log , {
93- authInfo,
94- bucket : bucketName ,
95- } ) ;
96- const corsHeaders = collectCorsHeaders ( request . headers . origin ,
97- request . method , bucket ) ;
98- return callback ( null , xml , corsHeaders ) ;
99- } catch ( err ) {
95+ ] , err => {
10096 const corsHeaders = collectCorsHeaders ( request . headers . origin ,
10197 request . method , bucket ) ;
10298 if ( err ) {
@@ -106,17 +102,16 @@ async function bucketGetTagging(authInfo, request, log, callback) {
106102 } ) ;
107103 monitoring . promMetrics ( 'GET' , bucketName , err . code ,
108104 'getBucketTagging' ) ;
109- } else {
110- monitoring . promMetrics (
111- 'GET' , bucketName , '200' , 'getBucketTagging' ) ;
112- pushMetric ( 'getBucketTagging' , log , {
113- authInfo,
114- bucket : bucketName ,
115- } ) ;
105+ return callback ( err , corsHeaders ) ;
116106 }
117-
118- return callback ( err , corsHeaders ) ;
119- }
107+ monitoring . promMetrics (
108+ 'GET' , bucketName , '200' , 'getBucketTagging' ) ;
109+ pushMetric ( 'getBucketTagging' , log , {
110+ authInfo,
111+ bucket : bucketName ,
112+ } ) ;
113+ return callback ( null , xml , corsHeaders ) ;
114+ } ) ;
120115}
121116
122117module . exports = bucketGetTagging ;
0 commit comments