@@ -1858,6 +1858,7 @@ function listObjectVersions(params, callback) {
18581858 */
18591859function getObject ( params , callback ) {
18601860 var reqParams = params . Query || { } ;
1861+ var reqParamsStr = params . QueryString || '' ;
18611862
18621863 reqParams [ 'response-content-type' ] = params [ 'ResponseContentType' ] ;
18631864 reqParams [ 'response-content-language' ] = params [ 'ResponseContentLanguage' ] ;
@@ -1933,6 +1934,7 @@ function getObject(params, callback) {
19331934 VersionId : params . VersionId ,
19341935 headers : params . Headers ,
19351936 qs : reqParams ,
1937+ qsStr : reqParamsStr ,
19361938 rawBody : true ,
19371939 outputStream : outputStream ,
19381940 onDownloadProgress : onDownloadProgress ,
@@ -2977,6 +2979,36 @@ function multipartAbort(params, callback) {
29772979 } ) ;
29782980}
29792981
2982+ /**
2983+ * cos 内置请求
2984+ * @param {Object } params 参数对象,必须
2985+ * @param {String } params.Bucket Bucket名称,必须
2986+ * @param {String } params.Region 地域名称,必须
2987+ * @param {String } params.Key object名称,必须
2988+ * @param {Function } callback 回调函数,必须
2989+ * @return {Object } err 请求失败的错误,如果请求成功,则为空。https://cloud.tencent.com/document/product/436/7730
2990+ * @return {Object } data 返回的数据
2991+ */
2992+ function request ( params , callback ) {
2993+ submitRequest . call ( this , {
2994+ method : params . Method ,
2995+ Bucket : params . Bucket ,
2996+ Region : params . Region ,
2997+ Key : params . Key ,
2998+ action : params . Action ,
2999+ headers : params . Headers ,
3000+ qs : params . Query ,
3001+ body : params . Body ,
3002+ } , function ( err , data ) {
3003+ if ( err ) return callback ( err ) ;
3004+ if ( data && data . body ) {
3005+ data . Body = data . body ;
3006+ delete data . body ;
3007+ }
3008+ callback ( err , data ) ;
3009+ } ) ;
3010+ }
3011+
29803012/**
29813013 * 获取签名
29823014 * @param {Object } params 参数对象,必须
@@ -3032,10 +3064,22 @@ function getObjectUrl(params, callback) {
30323064 region : params . Region ,
30333065 object : params . Key ,
30343066 } ) ;
3067+
3068+ var queryParamsStr = '' ;
3069+ if ( params . Query ) {
3070+ queryParamsStr += util . obj2str ( params . Query ) ;
3071+ }
3072+ if ( params . QueryString ) {
3073+ queryParamsStr += ( queryParamsStr ? '&' : '' ) + params . QueryString ;
3074+ }
3075+
3076+ var syncUrl = url ;
30353077 if ( params . Sign !== undefined && ! params . Sign ) {
3036- callback ( null , { Url : url } ) ;
3037- return url ;
3078+ queryParamsStr && ( syncUrl += '?' + queryParamsStr ) ;
3079+ callback ( null , { Url : syncUrl } ) ;
3080+ return syncUrl ;
30383081 }
3082+
30393083 var AuthData = getAuthorizationAsync . call ( this , {
30403084 Action : ( ( params . Method || '' ) . toUpperCase ( ) === 'PUT' ? 'name/cos:PutObject' : 'name/cos:GetObject' ) ,
30413085 Bucket : params . Bucket || '' ,
@@ -3056,16 +3100,18 @@ function getObjectUrl(params, callback) {
30563100 AuthData . ClientIP && ( signUrl += '&clientIP=' + AuthData . ClientIP ) ;
30573101 AuthData . ClientUA && ( signUrl += '&clientUA=' + AuthData . ClientUA ) ;
30583102 AuthData . Token && ( signUrl += '&token=' + AuthData . Token ) ;
3103+ queryParamsStr && ( signUrl += '&' + queryParamsStr ) ;
30593104 setTimeout ( function ( ) {
30603105 callback ( null , { Url : signUrl } ) ;
30613106 } ) ;
30623107 } ) ;
3108+
30633109 if ( AuthData ) {
3064- return url + '?' + AuthData . Authorization +
3110+ syncUrl += '?' + AuthData . Authorization +
30653111 ( AuthData . SecurityToken ? '&x-cos-security-token=' + AuthData . SecurityToken : '' ) ;
3066- } else {
3067- return url ;
3112+ queryParamsStr && ( syncUrl += '&' + queryParamsStr ) ;
30683113 }
3114+ return syncUrl ;
30693115}
30703116
30713117
@@ -3498,6 +3544,13 @@ function _submitRequest(params, callback) {
34983544 if ( params . action ) {
34993545 url = url + '?' + params . action ;
35003546 }
3547+ if ( params . qsStr ) {
3548+ if ( url . indexOf ( '?' ) > - 1 ) {
3549+ url = url + '&' + params . qsStr ;
3550+ } else {
3551+ url = url + '?' + params . qsStr ;
3552+ }
3553+ }
35013554
35023555 var opt = {
35033556 method : method ,
@@ -3828,6 +3881,7 @@ var API_MAP = {
38283881 multipartAbort : multipartAbort ,
38293882
38303883 // 工具方法
3884+ request : request ,
38313885 getObjectUrl : getObjectUrl ,
38323886 getAuth : getAuth ,
38333887 getV4Auth : getV4Auth ,
0 commit comments