-
Notifications
You must be signed in to change notification settings - Fork 253
Expand file tree
/
Copy pathbucketHead.js
More file actions
41 lines (38 loc) · 1.44 KB
/
bucketHead.js
File metadata and controls
41 lines (38 loc) · 1.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
const collectCorsHeaders = require('../utilities/collectCorsHeaders');
const { metadataValidateBucket } = require('../metadata/metadataUtils');
const { pushMetric } = require('../utapi/utilities');
/**
* Determine if bucket exists and if user has permission to access it
* @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
* with either error code or success
* @return {undefined}
*/
function bucketHead(authInfo, request, log, callback) {
log.debug('processing request', { method: 'bucketHead' });
const bucketName = request.bucketName;
const metadataValParams = {
authInfo,
bucketName,
requestType: 'bucketHead',
request,
};
metadataValidateBucket(metadataValParams, request.actionImplicitDenies, log, (err, bucket) => {
const corsHeaders = collectCorsHeaders(request.headers.origin,
request.method, bucket);
if (err) {
return callback(err, corsHeaders);
}
pushMetric('headBucket', log, {
authInfo,
bucket: bucketName,
});
const headers = {
'x-amz-bucket-region': bucket.getLocationConstraint(),
};
return callback(null, Object.assign(corsHeaders, headers));
});
}
module.exports = bucketHead;