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

Function objectGetACL

lib/api/objectGetACL.js:42–197  ·  view source on GitHub ↗

* objectGetACL - Return ACL 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 respond to http request * @return {undefined}

(authInfo, request, log, callback)

Source from the content-addressed store, hash-verified

40 * @return {undefined}
41 */
42function objectGetACL(authInfo, request, log, callback) {
43 log.debug('processing request', { method: 'objectGetACL' });
44 const bucketName = request.bucketName;
45 const objectKey = request.objectKey;
46
47 const decodedVidResult = decodeVersionId(request.query);
48 if (decodedVidResult instanceof Error) {
49 log.trace('invalid versionId query', {
50 versionId: request.query.versionId,
51 error: decodedVidResult,
52 });
53 return callback(decodedVidResult);
54 }
55 const versionId = decodedVidResult;
56
57 // FIXME pass 'getDeleteMarker: true' option to set
58 // 'x-amz-delete-marker' header (see S3C-7592)
59 const metadataValParams = {
60 authInfo,
61 bucketName,
62 objectKey,
63 versionId,
64 requestType: request.apiMethods || 'objectGetACL',
65 request,
66 };
67 const grantInfo = {
68 grants: [],
69 ownerInfo: {
70 ID: undefined,
71 displayName: undefined,
72 },
73 };
74
75 return async.waterfall([
76 function validateBucketAndObj(next) {
77 return standardMetadataValidateBucketAndObj(metadataValParams, request.actionImplicitDenies, log,
78 (err, bucket, objectMD) => {
79 if (err) {
80 log.trace('request authorization failed',
81 { method: 'objectGetACL', error: err });
82 return next(err);
83 }
84 if (!objectMD) {
85 const err = versionId ? errors.NoSuchVersion :
86 errors.NoSuchKey;
87 log.trace('error processing request',
88 { method: 'objectGetACL', error: err });
89 return next(err, bucket);
90 }
91 if (objectMD.isDeleteMarker) {
92 if (versionId) {
93 log.trace('requested version is delete marker',
94 { method: 'objectGetACL' });
95 // FIXME we should return a `x-amz-delete-marker: true` header,
96 // see S3C-7592
97 return next(errors.MethodNotAllowed);
98 }
99 log.trace('most recent version is delete marker',

Callers 3

transientBucket.jsFile · 0.85
objectGetACL.jsFile · 0.85

Calls 9

getVersionIdResHeaderFunction · 0.85
collectCorsHeadersFunction · 0.85
pushMetricFunction · 0.85
debugMethod · 0.80
traceMethod · 0.80
getOwnerMethod · 0.80
getLocationConstraintMethod · 0.80
decodeVersionIdFunction · 0.50

Tested by

no test coverage detected