MCPcopy
hub / github.com/scality/cloudserver / bucketPutTagging

Function bucketPutTagging

lib/api/bucketPutTagging.js:34–82  ·  view source on GitHub ↗

* Bucket Put Tagging - Create or update bucket Tagging * @param {AuthInfo} authInfo - Instance of AuthInfo class with requester's info * @param {object} request - http request object * @param {object} log - Werelogs logger * @param {function} callback - callback to server * @return {undefined}

(authInfo, request, log, callback)

Source from the content-addressed store, hash-verified

32 * @return {undefined}
33 */
34function bucketPutTagging(authInfo, request, log, callback) {
35 log.debug('processing request', { method: 'bucketPutTagging' });
36
37 const { bucketName, headers } = request;
38 const metadataValParams = {
39 authInfo,
40 bucketName,
41 requestType: request.apiMethods || 'bucketPutTagging',
42 request,
43 };
44 let bucket = null;
45 return waterfall([
46 next => standardMetadataValidateBucket(metadataValParams, request.actionImplicitDenies, log,
47 (err, b) => {
48 bucket = b;
49 return next(err);
50 }),
51 next => checkExpectedBucketOwner(headers, bucket, log, next),
52 next => parseTagXml(request.post, log, next),
53 (tags, next) => {
54 const tagArray = [];
55 Object.keys(tags).forEach(key => {
56 tagArray.push({ Value: tags[key], Key: key });
57 });
58 bucket.setTags(tagArray);
59 metadata.updateBucket(bucket.getName(), bucket, log, err =>
60 next(err));
61 },
62 ], err => {
63 const corsHeaders = collectCorsHeaders(request.headers.origin,
64 request.method, bucket);
65 if (err) {
66 log.debug('error processing request', {
67 error: err,
68 method: 'bucketPutTagging'
69 });
70 monitoring.promMetrics('PUT', bucketName, err.code,
71 'putBucketTagging');
72 } else {
73 monitoring.promMetrics(
74 'PUT', bucketName, '200', 'putBucketTagging');
75 pushMetric('putBucketTagging', log, {
76 authInfo,
77 bucket: bucketName,
78 });
79 }
80 return callback(err, corsHeaders);
81 });
82}
83
84module.exports = bucketPutTagging;

Callers 3

Calls 5

checkExpectedBucketOwnerFunction · 0.85
collectCorsHeadersFunction · 0.85
pushMetricFunction · 0.85
debugMethod · 0.80

Tested by

no test coverage detected