Skip to content

Commit f3eab19

Browse files
author
carsonxu
committed
支持 after-receive 事件和 Request 参数
1 parent f94ac32 commit f3eab19

File tree

6 files changed

+67
-65
lines changed

6 files changed

+67
-65
lines changed

dist/cos-js-sdk-v5.js

Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2161,7 +2161,7 @@ base.init(COS, task);
21612161
advance.init(COS, task);
21622162

21632163
COS.getAuthorization = util.getAuth;
2164-
COS.version = '1.0.4';
2164+
COS.version = '1.1.0';
21652165

21662166
module.exports = COS;
21672167

@@ -5227,17 +5227,8 @@ function getBucketLocation(params, callback) {
52275227
}
52285228

52295229
function putBucketPolicy(params, callback) {
5230-
var Policy = params['Policy'];
5231-
var PolicyStr = Policy;
5232-
try {
5233-
if (typeof Policy === 'string') {
5234-
Policy = JSON.parse(PolicyStr);
5235-
} else {
5236-
PolicyStr = JSON.stringify(Policy);
5237-
}
5238-
} catch (e) {
5239-
callback({ error: 'Policy format error' });
5240-
}
5230+
var PolicyStr = params['Policy'];
5231+
if (typeof PolicyStr !== 'string') PolicyStr = JSON.stringify(PolicyStr);
52415232

52425233
var headers = params.Headers;
52435234
headers['Content-Type'] = 'application/json';
@@ -5250,8 +5241,7 @@ function putBucketPolicy(params, callback) {
52505241
Region: params.Region,
52515242
action: 'policy',
52525243
body: PolicyStr,
5253-
headers: headers,
5254-
json: true
5244+
headers: headers
52555245
}, function (err, data) {
52565246
if (err && err.statusCode === 204) {
52575247
return callback(null, { statusCode: err.statusCode });
@@ -6405,7 +6395,6 @@ function putBucketAccelerate(params, callback) {
64056395
headers['Content-MD5'] = util.binaryBase64(util.md5(xml));
64066396

64076397
submitRequest.call(this, {
6408-
Interface: 'putBucketAccelerate',
64096398
Action: 'name/cos:PutBucketAccelerate',
64106399
method: 'PUT',
64116400
Bucket: params.Bucket,
@@ -6424,7 +6413,6 @@ function putBucketAccelerate(params, callback) {
64246413

64256414
function getBucketAccelerate(params, callback) {
64266415
submitRequest.call(this, {
6427-
Interface: 'getBucketAccelerate',
64286416
Action: 'name/cos:GetBucketAccelerate',
64296417
method: 'GET',
64306418
Bucket: params.Bucket,
@@ -6885,6 +6873,7 @@ function putObjectCopy(params, callback) {
68856873
var SourceKey = decodeURIComponent(m[4]);
68866874

68876875
submitRequest.call(this, {
6876+
Interface: 'PutObjectCopy',
68886877
Scope: [{
68896878
action: 'name/cos:GetObject',
68906879
bucket: SourceBucket,
@@ -6927,6 +6916,7 @@ function uploadPartCopy(params, callback) {
69276916
var SourceKey = decodeURIComponent(m[4]);
69286917

69296918
submitRequest.call(this, {
6919+
Interface: 'UploadPartCopy',
69306920
Scope: [{
69316921
action: 'name/cos:GetObject',
69326922
bucket: SourceBucket,
@@ -6980,6 +6970,7 @@ function deleteMultipleObject(params, callback) {
69806970
});
69816971

69826972
submitRequest.call(this, {
6973+
Interface: 'DeleteMultipleObjects',
69836974
Scope: Scope,
69846975
method: 'POST',
69856976
Bucket: params.Bucket,
@@ -7057,7 +7048,6 @@ function putObjectTagging(params, callback) {
70577048
headers['Content-MD5'] = util.binaryBase64(util.md5(xml));
70587049

70597050
submitRequest.call(this, {
7060-
Interface: 'putObjectTagging',
70617051
Action: 'name/cos:PutObjectTagging',
70627052
method: 'PUT',
70637053
Bucket: params.Bucket,
@@ -7092,7 +7082,6 @@ function putObjectTagging(params, callback) {
70927082
function getObjectTagging(params, callback) {
70937083

70947084
submitRequest.call(this, {
7095-
Interface: 'getObjectTagging',
70967085
Action: 'name/cos:GetObjectTagging',
70977086
method: 'GET',
70987087
Key: params.Key,
@@ -7139,7 +7128,6 @@ function getObjectTagging(params, callback) {
71397128
*/
71407129
function deleteObjectTagging(params, callback) {
71417130
submitRequest.call(this, {
7142-
Interface: 'deleteObjectTagging',
71437131
Action: 'name/cos:DeleteObjectTagging',
71447132
method: 'DELETE',
71457133
Bucket: params.Bucket,
@@ -7183,7 +7171,7 @@ function selectObjectContent(params, callback) {
71837171
headers['Content-MD5'] = util.binaryBase64(util.md5(xml));
71847172

71857173
submitRequest.call(this, {
7186-
Interface: 'selectObjectContent',
7174+
Interface: 'SelectObjectContent',
71877175
Action: 'name/cos:GetObject',
71887176
method: 'POST',
71897177
Bucket: params.Bucket,
@@ -7981,7 +7969,6 @@ function _submitRequest(params, callback) {
79817969
var method = params.method || 'GET';
79827970
var url = params.url;
79837971
var body = params.body;
7984-
var json = params.json;
79857972
var rawBody = params.rawBody;
79867973

79877974
// url
@@ -8002,8 +7989,7 @@ function _submitRequest(params, callback) {
80027989
url: url,
80037990
headers: params.headers,
80047991
qs: params.qs,
8005-
body: body,
8006-
json: json
7992+
body: body
80077993
};
80087994

80097995
// 获取签名
@@ -8033,10 +8019,23 @@ function _submitRequest(params, callback) {
80338019
opt.timeout = this.options.Timeout;
80348020
}
80358021

8022+
// 整理 cosInterface 用于 before-send 使用
8023+
if (params.Interface) {
8024+
opt.cosInterface = params.Interface;
8025+
} else if (params.Action) {
8026+
opt.cosInterface = params.Action.replace(/^name\/cos:/, '');
8027+
}
8028+
80368029
self.options.ForcePathStyle && (opt.pathStyle = self.options.ForcePathStyle);
80378030
self.emit('before-send', opt);
8038-
var sender = REQUEST(opt, function (err, response, body) {
8039-
if (err === 'abort') return;
8031+
var sender = (self.options.Request || REQUEST)(opt, function (r) {
8032+
if (r.error === 'abort') return;
8033+
8034+
// 抛出事件,允许修改返回值的 error、statusCode、statusMessage、body
8035+
self.emit('after-receive', r);
8036+
var response = { statusCode: r.statusCode, statusMessage: r.statusMessage, headers: r.headers };
8037+
var err = r.error;
8038+
var body = r.body;
80408039

80418040
// 返回内容添加 状态码 和 headers
80428041
var hasReturned;
@@ -8242,7 +8241,7 @@ var queryStringify = function (obj, sep, eq, name) {
82428241
return encodeURIComponent(stringifyPrimitive(name)) + eq + encodeURIComponent(stringifyPrimitive(obj));
82438242
};
82448243

8245-
var xhrRes = function (xhr) {
8244+
var xhrRes = function (err, xhr, body) {
82468245
var headers = {};
82478246
xhr.getAllResponseHeaders().trim().split('\n').forEach(function (item) {
82488247
if (item) {
@@ -8253,9 +8252,11 @@ var xhrRes = function (xhr) {
82538252
}
82548253
});
82558254
return {
8255+
error: err,
82568256
statusCode: xhr.status,
82578257
statusMessage: xhr.statusText,
8258-
headers: headers
8258+
headers: headers,
8259+
body: body
82598260
};
82608261
};
82618262

@@ -8297,20 +8298,20 @@ var request = function (opt, callback) {
82978298

82988299
// success 2xx/3xx/4xx
82998300
xhr.onload = function () {
8300-
callback(null, xhrRes(xhr), xhrBody(xhr, opt.dataType));
8301+
callback(xhrRes(null, xhr, xhrBody(xhr, opt.dataType)));
83018302
};
83028303

83038304
// error 5xx/0 (网络错误、跨域报错、Https connect-src 限制的报错时 statusCode 为 0)
83048305
xhr.onerror = function (err) {
8305-
var res = xhrBody(xhr, opt.dataType);
8306-
if (res) {
8306+
var body = xhrBody(xhr, opt.dataType);
8307+
if (body) {
83078308
// 5xx
8308-
callback(null, xhrRes(xhr), res);
8309+
callback(xhrRes(null, xhr, body));
83098310
} else {
83108311
// 0
83118312
var error = xhr.statusText;
83128313
if (!error && xhr.status === 0) error = 'CORS blocked or network error';
8313-
callback(error, xhrRes(xhr), res);
8314+
callback(xhrRes(error, xhr, body));
83148315
}
83158316
};
83168317

dist/cos-js-sdk-v5.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/request.js

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ var queryStringify = function(obj, sep, eq, name) {
3535
encodeURIComponent(stringifyPrimitive(obj));
3636
};
3737

38-
var xhrRes = function (xhr) {
38+
var xhrRes = function (err, xhr, body) {
3939
var headers = {};
4040
xhr.getAllResponseHeaders().trim().split('\n').forEach(function (item) {
4141
if (item) {
@@ -46,9 +46,11 @@ var xhrRes = function (xhr) {
4646
}
4747
});
4848
return {
49+
error: err,
4950
statusCode: xhr.status,
5051
statusMessage: xhr.statusText,
51-
headers: headers
52+
headers: headers,
53+
body: body,
5254
};
5355
};
5456

@@ -94,18 +96,18 @@ var request = function (opt, callback) {
9496

9597
// success 2xx/3xx/4xx
9698
xhr.onload = function () {
97-
callback(null, xhrRes(xhr), xhrBody(xhr, opt.dataType));
99+
callback(xhrRes(null, xhr, xhrBody(xhr, opt.dataType)));
98100
};
99101

100102
// error 5xx/0 (网络错误、跨域报错、Https connect-src 限制的报错时 statusCode 为 0)
101103
xhr.onerror = function (err) {
102-
var res = xhrBody(xhr, opt.dataType);
103-
if (res) { // 5xx
104-
callback(null, xhrRes(xhr), res);
104+
var body = xhrBody(xhr, opt.dataType);
105+
if (body) { // 5xx
106+
callback(xhrRes(null, xhr, body));
105107
} else { // 0
106108
var error = xhr.statusText;
107109
if (!error && xhr.status === 0) error = 'CORS blocked or network error';
108-
callback(error, xhrRes(xhr), res);
110+
callback(xhrRes(error, xhr, body));
109111
}
110112
};
111113

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cos-js-sdk-v5",
3-
"version": "1.0.4",
3+
"version": "1.1.0",
44
"description": "JavaScript SDK for [腾讯云对象存储](https://cloud.tencent.com/product/cos)",
55
"main": "index.js",
66
"scripts": {

0 commit comments

Comments
 (0)