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

Function objectGetAttributes

lib/api/objectGetAttributes.js:64–175  ·  view source on GitHub ↗

* objectGetAttributes - Retrieves all metadata from an object without returning the object itself * @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 -

(authInfo, request, log, callback)

Source from the content-addressed store, hash-verified

62 * @throws {ArsenalError} MethodNotAllowed - if object is a delete marker
63 */
64async function objectGetAttributes(authInfo, request, log, callback) {
65 if (callback) {
66 return objectGetAttributes(authInfo, request, log)
67 .then(result => callback(null, result.xml, result.responseHeaders))
68 .catch(err => callback(err, null, err.responseHeaders ?? {}));
69 }
70
71 log.trace('processing request', { method: OBJECT_GET_ATTRIBUTES });
72 const { bucketName, objectKey, headers, actionImplicitDenies } = request;
73
74 const versionId = decodeVersionId(request.query);
75 if (versionId instanceof Error) {
76 log.debug('invalid versionId query', {
77 method: OBJECT_GET_ATTRIBUTES,
78 versionId: request.query.versionId,
79 error: versionId,
80 });
81 throw versionId;
82 }
83
84 const metadataValParams = {
85 authInfo,
86 bucketName,
87 objectKey,
88 versionId,
89 getDeleteMarker: true,
90 requestType: request.apiMethods || OBJECT_GET_ATTRIBUTES,
91 request,
92 };
93
94 let bucket, objectMD;
95 try {
96 ({ bucket, objectMD } = await validateBucketAndObj(metadataValParams, actionImplicitDenies, log));
97 await checkExpectedBucketOwnerPromise(headers, bucket, log);
98 } catch (err) {
99 log.debug('error validating bucket and object', {
100 method: OBJECT_GET_ATTRIBUTES,
101 bucket: bucketName,
102 key: objectKey,
103 versionId,
104 error: err,
105 });
106 throw err;
107 }
108
109 const responseHeaders = collectCorsHeaders(headers.origin, request.method, bucket);
110
111 if (!objectMD) {
112 log.debug('object not found', {
113 method: OBJECT_GET_ATTRIBUTES,
114 bucket: bucketName,
115 key: objectKey,
116 versionId,
117 });
118 const err = versionId ? errors.NoSuchVersion : errors.NoSuchKey;
119 err.responseHeaders = responseHeaders;
120 throw err;
121 }

Callers 1

Calls 8

collectCorsHeadersFunction · 0.85
getVersionIdResHeaderFunction · 0.85
parseAttributesHeadersFunction · 0.85
pushMetricFunction · 0.85
buildXmlResponseFunction · 0.85
traceMethod · 0.80
debugMethod · 0.80
decodeVersionIdFunction · 0.50

Tested by

no test coverage detected