-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmodify-headers.js
54 lines (46 loc) · 1.56 KB
/
modify-headers.js
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
42
43
44
45
46
47
48
49
50
51
52
53
54
var AWS = require('aws-sdk');
var _ = require('underscore');
var s3 = new AWS.S3({apiVersion: '2006-03-01'});
module.exports = function modifyHeadersFactory(headerTransformer) {
return function fixObjectHeaders(bucket, key, callback) {
modifyHeaders(bucket, key, headerTransformer,
function(err, response, original, fixed) {
if (err) {
console.log("FAILURE:%s:%s", bucket,key);
} else {
console.log("SUCCESS:%s:%s before:%s", bucket, key, JSON.stringify(original));
console.log(" after:%s", JSON.stringify(fixed));
}
callback(err);
});
}
}
function modifyHeaders(bucket, key, headerTransformer, callback) {
s3.headObject({Bucket: bucket, Key: key}, function(err, headers) {
if (err) {
return callback(err);
}
var newHeaders = _.clone(headers);
newHeaders = headerTransformer(newHeaders);
var e = encodeURIComponent;
var requestParams = {
Bucket: bucket,
Key: key,
CopySource: e(bucket) + '/' + e(key),
MetadataDirective: 'REPLACE',
ACL: 'public-read'
};
requestParams = _.extend({}, newHeaders, requestParams);
removeDisallowedHeaders(requestParams);
s3.copyObject(requestParams, function(err, response) {
callback(err, response, headers, newHeaders);
});
});
}
function removeDisallowedHeaders(headers) {
delete headers.AcceptRanges;
delete headers.ContentLength;
delete headers.ETag;
delete headers.LastModified;
return headers;
}