@@ -2161,7 +2161,7 @@ base.init(COS, task);
2161
2161
advance . init ( COS , task ) ;
2162
2162
2163
2163
COS . getAuthorization = util . getAuth ;
2164
- COS . version = '1.0.4 ' ;
2164
+ COS . version = '1.1.0 ' ;
2165
2165
2166
2166
module . exports = COS ;
2167
2167
@@ -5227,17 +5227,8 @@ function getBucketLocation(params, callback) {
5227
5227
}
5228
5228
5229
5229
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 ) ;
5241
5232
5242
5233
var headers = params . Headers ;
5243
5234
headers [ 'Content-Type' ] = 'application/json' ;
@@ -5250,8 +5241,7 @@ function putBucketPolicy(params, callback) {
5250
5241
Region : params . Region ,
5251
5242
action : 'policy' ,
5252
5243
body : PolicyStr ,
5253
- headers : headers ,
5254
- json : true
5244
+ headers : headers
5255
5245
} , function ( err , data ) {
5256
5246
if ( err && err . statusCode === 204 ) {
5257
5247
return callback ( null , { statusCode : err . statusCode } ) ;
@@ -6405,7 +6395,6 @@ function putBucketAccelerate(params, callback) {
6405
6395
headers [ 'Content-MD5' ] = util . binaryBase64 ( util . md5 ( xml ) ) ;
6406
6396
6407
6397
submitRequest . call ( this , {
6408
- Interface : 'putBucketAccelerate' ,
6409
6398
Action : 'name/cos:PutBucketAccelerate' ,
6410
6399
method : 'PUT' ,
6411
6400
Bucket : params . Bucket ,
@@ -6424,7 +6413,6 @@ function putBucketAccelerate(params, callback) {
6424
6413
6425
6414
function getBucketAccelerate ( params , callback ) {
6426
6415
submitRequest . call ( this , {
6427
- Interface : 'getBucketAccelerate' ,
6428
6416
Action : 'name/cos:GetBucketAccelerate' ,
6429
6417
method : 'GET' ,
6430
6418
Bucket : params . Bucket ,
@@ -6885,6 +6873,7 @@ function putObjectCopy(params, callback) {
6885
6873
var SourceKey = decodeURIComponent ( m [ 4 ] ) ;
6886
6874
6887
6875
submitRequest . call ( this , {
6876
+ Interface : 'PutObjectCopy' ,
6888
6877
Scope : [ {
6889
6878
action : 'name/cos:GetObject' ,
6890
6879
bucket : SourceBucket ,
@@ -6927,6 +6916,7 @@ function uploadPartCopy(params, callback) {
6927
6916
var SourceKey = decodeURIComponent ( m [ 4 ] ) ;
6928
6917
6929
6918
submitRequest . call ( this , {
6919
+ Interface : 'UploadPartCopy' ,
6930
6920
Scope : [ {
6931
6921
action : 'name/cos:GetObject' ,
6932
6922
bucket : SourceBucket ,
@@ -6980,6 +6970,7 @@ function deleteMultipleObject(params, callback) {
6980
6970
} ) ;
6981
6971
6982
6972
submitRequest . call ( this , {
6973
+ Interface : 'DeleteMultipleObjects' ,
6983
6974
Scope : Scope ,
6984
6975
method : 'POST' ,
6985
6976
Bucket : params . Bucket ,
@@ -7057,7 +7048,6 @@ function putObjectTagging(params, callback) {
7057
7048
headers [ 'Content-MD5' ] = util . binaryBase64 ( util . md5 ( xml ) ) ;
7058
7049
7059
7050
submitRequest . call ( this , {
7060
- Interface : 'putObjectTagging' ,
7061
7051
Action : 'name/cos:PutObjectTagging' ,
7062
7052
method : 'PUT' ,
7063
7053
Bucket : params . Bucket ,
@@ -7092,7 +7082,6 @@ function putObjectTagging(params, callback) {
7092
7082
function getObjectTagging ( params , callback ) {
7093
7083
7094
7084
submitRequest . call ( this , {
7095
- Interface : 'getObjectTagging' ,
7096
7085
Action : 'name/cos:GetObjectTagging' ,
7097
7086
method : 'GET' ,
7098
7087
Key : params . Key ,
@@ -7139,7 +7128,6 @@ function getObjectTagging(params, callback) {
7139
7128
*/
7140
7129
function deleteObjectTagging ( params , callback ) {
7141
7130
submitRequest . call ( this , {
7142
- Interface : 'deleteObjectTagging' ,
7143
7131
Action : 'name/cos:DeleteObjectTagging' ,
7144
7132
method : 'DELETE' ,
7145
7133
Bucket : params . Bucket ,
@@ -7183,7 +7171,7 @@ function selectObjectContent(params, callback) {
7183
7171
headers [ 'Content-MD5' ] = util . binaryBase64 ( util . md5 ( xml ) ) ;
7184
7172
7185
7173
submitRequest . call ( this , {
7186
- Interface : 'selectObjectContent ' ,
7174
+ Interface : 'SelectObjectContent ' ,
7187
7175
Action : 'name/cos:GetObject' ,
7188
7176
method : 'POST' ,
7189
7177
Bucket : params . Bucket ,
@@ -7981,7 +7969,6 @@ function _submitRequest(params, callback) {
7981
7969
var method = params . method || 'GET' ;
7982
7970
var url = params . url ;
7983
7971
var body = params . body ;
7984
- var json = params . json ;
7985
7972
var rawBody = params . rawBody ;
7986
7973
7987
7974
// url
@@ -8002,8 +7989,7 @@ function _submitRequest(params, callback) {
8002
7989
url : url ,
8003
7990
headers : params . headers ,
8004
7991
qs : params . qs ,
8005
- body : body ,
8006
- json : json
7992
+ body : body
8007
7993
} ;
8008
7994
8009
7995
// 获取签名
@@ -8033,10 +8019,23 @@ function _submitRequest(params, callback) {
8033
8019
opt . timeout = this . options . Timeout ;
8034
8020
}
8035
8021
8022
+ // 整理 cosInterface 用于 before-send 使用
8023
+ if ( params . Interface ) {
8024
+ opt . cosInterface = params . Interface ;
8025
+ } else if ( params . Action ) {
8026
+ opt . cosInterface = params . Action . replace ( / ^ n a m e \/ c o s : / , '' ) ;
8027
+ }
8028
+
8036
8029
self . options . ForcePathStyle && ( opt . pathStyle = self . options . ForcePathStyle ) ;
8037
8030
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 ;
8040
8039
8041
8040
// 返回内容添加 状态码 和 headers
8042
8041
var hasReturned ;
@@ -8242,7 +8241,7 @@ var queryStringify = function (obj, sep, eq, name) {
8242
8241
return encodeURIComponent ( stringifyPrimitive ( name ) ) + eq + encodeURIComponent ( stringifyPrimitive ( obj ) ) ;
8243
8242
} ;
8244
8243
8245
- var xhrRes = function ( xhr ) {
8244
+ var xhrRes = function ( err , xhr , body ) {
8246
8245
var headers = { } ;
8247
8246
xhr . getAllResponseHeaders ( ) . trim ( ) . split ( '\n' ) . forEach ( function ( item ) {
8248
8247
if ( item ) {
@@ -8253,9 +8252,11 @@ var xhrRes = function (xhr) {
8253
8252
}
8254
8253
} ) ;
8255
8254
return {
8255
+ error : err ,
8256
8256
statusCode : xhr . status ,
8257
8257
statusMessage : xhr . statusText ,
8258
- headers : headers
8258
+ headers : headers ,
8259
+ body : body
8259
8260
} ;
8260
8261
} ;
8261
8262
@@ -8297,20 +8298,20 @@ var request = function (opt, callback) {
8297
8298
8298
8299
// success 2xx/3xx/4xx
8299
8300
xhr . onload = function ( ) {
8300
- callback ( null , xhrRes ( xhr ) , xhrBody ( xhr , opt . dataType ) ) ;
8301
+ callback ( xhrRes ( null , xhr , xhrBody ( xhr , opt . dataType ) ) ) ;
8301
8302
} ;
8302
8303
8303
8304
// error 5xx/0 (网络错误、跨域报错、Https connect-src 限制的报错时 statusCode 为 0)
8304
8305
xhr . onerror = function ( err ) {
8305
- var res = xhrBody ( xhr , opt . dataType ) ;
8306
- if ( res ) {
8306
+ var body = xhrBody ( xhr , opt . dataType ) ;
8307
+ if ( body ) {
8307
8308
// 5xx
8308
- callback ( null , xhrRes ( xhr ) , res ) ;
8309
+ callback ( xhrRes ( null , xhr , body ) ) ;
8309
8310
} else {
8310
8311
// 0
8311
8312
var error = xhr . statusText ;
8312
8313
if ( ! error && xhr . status === 0 ) error = 'CORS blocked or network error' ;
8313
- callback ( error , xhrRes ( xhr ) , res ) ;
8314
+ callback ( xhrRes ( error , xhr , body ) ) ;
8314
8315
}
8315
8316
} ;
8316
8317
0 commit comments