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

Function objectGetLegalHold

lib/api/objectGetLegalHold.js:20–104  ·  view source on GitHub ↗

* Returns legal hold status of object * @param {AuthInfo} authInfo - Instance of AuthInfo class with requester's info * @param {object} request - http request object * @param {object} log - Werelogs logger * @return {Promise } - object containing xml and additionalResHeaders

(authInfo, request, log, callback)

Source from the content-addressed store, hash-verified

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

Callers 2

Calls 8

promisifyFunction · 0.85
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