Skip to content

Commit 3368e93

Browse files
committed
rs: add changeHeaders
1 parent a18a082 commit 3368e93

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed

qiniu/storage/rs.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,55 @@ function changeMimeReq(mac, config, bucket, key, newMime, callbackFunc) {
110110
rpc.postWithoutForm(requestURI, digest, callbackFunc);
111111
}
112112

113+
114+
// 修改文件返回的Headers内容
115+
// @link TODO
116+
// @param bucket 空间名称
117+
// @param key 文件名称
118+
// @param headers 需要修改的headers
119+
// @param callbackFunc(err, respBody, respInfo) 回调函数
120+
BucketManager.prototype.changeHeaders = function(bucket, key, headers,
121+
callbackFunc) {
122+
var useCache = false;
123+
var that = this;
124+
if (this.config.zone) {
125+
if (this.config.zoneExpire == -1) {
126+
useCache = true;
127+
} else {
128+
if (!util.isTimestampExpired(this.config.zoneExpire)) {
129+
useCache = true;
130+
}
131+
}
132+
}
133+
134+
if (useCache) {
135+
changeHeadersReq(this.mac, this.config, bucket, key, headers, callbackFunc);
136+
} else {
137+
zone.getZoneInfo(this.mac.accessKey, bucket, function(err, cZoneInfo,
138+
cZoneExpire) {
139+
if (err) {
140+
callbackFunc(err, null, null);
141+
return;
142+
}
143+
144+
//update object
145+
that.config.zone = cZoneInfo;
146+
that.config.zoneExpire = cZoneExpire;
147+
//req
148+
changeHeadersReq(that.mac, that.config, bucket, key, headers,
149+
callbackFunc);
150+
});
151+
}
152+
}
153+
154+
function changeHeadersReq(mac, config, bucket, key, headers, callbackFunc) {
155+
var scheme = config.useHttpsDomain ? "https://" : "http://";
156+
var changeHeadersOp = exports.changeHeadersOp(bucket, key, headers);
157+
var requestURI = scheme + config.zone.rsHost + changeHeadersOp;
158+
var digest = util.generateAccessToken(mac, requestURI, null);
159+
rpc.postWithoutForm(requestURI, digest, callbackFunc);
160+
}
161+
113162
// 移动或重命名文件,当bucketSrc==bucketDest相同的时候,就是重命名文件操作
114163
// @link https://developer.qiniu.com/kodo/api/1257/delete
115164
// @param srcBucket 源空间名称
@@ -594,6 +643,20 @@ exports.changeMimeOp = function(bucket, key, newMime) {
594643
return '/chgm/' + encodedEntryURI + '/mime/' + encodedMime;
595644
}
596645

646+
exports.changeHeadersOp = function(bucket, key, headers) {
647+
var encodedEntryURI = util.encodedEntry(bucket, key);
648+
var prefix = 'x-qn-meta-!';
649+
var prefixReg = /^x\-qn\-meta\-\!/;
650+
var path = '/chgm/' + encodedEntryURI;
651+
for (var headerKey in headers) {
652+
var encodedValue = util.urlsafeBase64Encode(headers[headerKey]);
653+
var prefixedHeaderKey = headerKey.match(prefixReg) ? headerKey : prefix + headerKey;
654+
path += "/" + prefixedHeaderKey + "/" + encodedValue;
655+
}
656+
657+
return path;
658+
}
659+
597660
exports.changeTypeOp = function(bucket, key, newType) {
598661
var encodedEntryURI = util.encodedEntry(bucket, key);
599662
return '/chtype/' + encodedEntryURI + '/type/' + newType;

0 commit comments

Comments
 (0)