@@ -2161,7 +2161,7 @@ base.init(COS, task);
21612161advance . init ( COS , task ) ;
21622162
21632163COS . getAuthorization = util . getAuth ;
2164- COS . version = '1.0.4 ' ;
2164+ COS . version = '1.1.0 ' ;
21652165
21662166module . exports = COS ;
21672167
@@ -5227,17 +5227,8 @@ function getBucketLocation(params, callback) {
52275227}
52285228
52295229function 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
64256414function 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) {
70927082function 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 */
71407129function 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 ( / ^ n a m e \/ c o s : / , '' ) ;
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
0 commit comments