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

Function objectGetRetention

lib/api/objectGetRetention.js:21–112  ·  view source on GitHub ↗

* Object Get Retention - Return retention info 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 {undefine

(authInfo, request, log, callback)

Source from the content-addressed store, hash-verified

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

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