MCPcopy Index your code
hub / github.com/scality/cloudserver / objectGetTagging

Function objectGetTagging

lib/api/objectGetTagging.js:21–108  ·  view source on GitHub ↗

* Object Get Tagging - Return tag for object * @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

19 * @return {undefined}
20 */
21function objectGetTagging(authInfo, request, log, callback) {
22 log.debug('processing request', { method: 'objectGetTagging' });
23
24 const bucketName = request.bucketName;
25 const objectKey = request.objectKey;
26
27 const decodedVidResult = decodeVersionId(request.query);
28 if (decodedVidResult instanceof Error) {
29 log.trace('invalid versionId query', {
30 versionId: request.query.versionId,
31 error: decodedVidResult,
32 });
33 return process.nextTick(() => callback(decodedVidResult));
34 }
35 const reqVersionId = decodedVidResult;
36
37 // FIXME pass 'getDeleteMarker: true' option to set
38 // 'x-amz-delete-marker' header (see S3C-7592)
39 const metadataValParams = {
40 authInfo,
41 bucketName,
42 objectKey,
43 versionId: reqVersionId,
44 requestType: request.apiMethods || 'objectGetTagging',
45 request,
46 };
47
48 return async.waterfall([
49 next => standardMetadataValidateBucketAndObj(metadataValParams, request.actionImplicitDenies, log,
50 (err, bucket, objectMD) => {
51 if (err) {
52 log.trace('request authorization failed',
53 { method: 'objectGetTagging', error: err });
54 return next(err);
55 }
56 if (!objectMD) {
57 const err = reqVersionId ? errors.NoSuchVersion :
58 errors.NoSuchKey;
59 log.trace('error no object metadata found',
60 { method: 'objectGetTagging', error: err });
61 return next(err, bucket);
62 }
63 if (objectMD.isDeleteMarker) {
64 if (reqVersionId) {
65 log.trace('requested version is delete marker',
66 { method: 'objectGetTagging' });
67 return next(errors.MethodNotAllowed);
68 // FIXME we should return a `x-amz-delete-marker: true` header,
69 // see S3C-7592
70 }
71 log.trace('most recent version is delete marker',
72 { method: 'objectGetTagging' });
73 // FIXME we should return a `x-amz-delete-marker: true` header,
74 // see S3C-7592
75 return next(errors.NoSuchKey);
76 }
77 return next(null, bucket, objectMD);
78 }),

Callers 1

Calls 8

collectCorsHeadersFunction · 0.85
pushMetricFunction · 0.85
getVersionIdResHeaderFunction · 0.85
debugMethod · 0.80
traceMethod · 0.80
convertToXmlFunction · 0.70
decodeVersionIdFunction · 0.50

Tested by

no test coverage detected