@@ -1858,6 +1858,7 @@ function listObjectVersions(params, callback) {
1858
1858
*/
1859
1859
function getObject ( params , callback ) {
1860
1860
var reqParams = params . Query || { } ;
1861
+ var reqParamsStr = params . QueryString || '' ;
1861
1862
1862
1863
reqParams [ 'response-content-type' ] = params [ 'ResponseContentType' ] ;
1863
1864
reqParams [ 'response-content-language' ] = params [ 'ResponseContentLanguage' ] ;
@@ -1933,6 +1934,7 @@ function getObject(params, callback) {
1933
1934
VersionId : params . VersionId ,
1934
1935
headers : params . Headers ,
1935
1936
qs : reqParams ,
1937
+ qsStr : reqParamsStr ,
1936
1938
rawBody : true ,
1937
1939
outputStream : outputStream ,
1938
1940
onDownloadProgress : onDownloadProgress ,
@@ -2977,6 +2979,36 @@ function multipartAbort(params, callback) {
2977
2979
} ) ;
2978
2980
}
2979
2981
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
+
2980
3012
/**
2981
3013
* 获取签名
2982
3014
* @param {Object } params 参数对象,必须
@@ -3032,10 +3064,22 @@ function getObjectUrl(params, callback) {
3032
3064
region : params . Region ,
3033
3065
object : params . Key ,
3034
3066
} ) ;
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 ;
3035
3077
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 ;
3038
3081
}
3082
+
3039
3083
var AuthData = getAuthorizationAsync . call ( this , {
3040
3084
Action : ( ( params . Method || '' ) . toUpperCase ( ) === 'PUT' ? 'name/cos:PutObject' : 'name/cos:GetObject' ) ,
3041
3085
Bucket : params . Bucket || '' ,
@@ -3056,16 +3100,18 @@ function getObjectUrl(params, callback) {
3056
3100
AuthData . ClientIP && ( signUrl += '&clientIP=' + AuthData . ClientIP ) ;
3057
3101
AuthData . ClientUA && ( signUrl += '&clientUA=' + AuthData . ClientUA ) ;
3058
3102
AuthData . Token && ( signUrl += '&token=' + AuthData . Token ) ;
3103
+ queryParamsStr && ( signUrl += '&' + queryParamsStr ) ;
3059
3104
setTimeout ( function ( ) {
3060
3105
callback ( null , { Url : signUrl } ) ;
3061
3106
} ) ;
3062
3107
} ) ;
3108
+
3063
3109
if ( AuthData ) {
3064
- return url + '?' + AuthData . Authorization +
3110
+ syncUrl += '?' + AuthData . Authorization +
3065
3111
( AuthData . SecurityToken ? '&x-cos-security-token=' + AuthData . SecurityToken : '' ) ;
3066
- } else {
3067
- return url ;
3112
+ queryParamsStr && ( syncUrl += '&' + queryParamsStr ) ;
3068
3113
}
3114
+ return syncUrl ;
3069
3115
}
3070
3116
3071
3117
@@ -3498,6 +3544,13 @@ function _submitRequest(params, callback) {
3498
3544
if ( params . action ) {
3499
3545
url = url + '?' + params . action ;
3500
3546
}
3547
+ if ( params . qsStr ) {
3548
+ if ( url . indexOf ( '?' ) > - 1 ) {
3549
+ url = url + '&' + params . qsStr ;
3550
+ } else {
3551
+ url = url + '?' + params . qsStr ;
3552
+ }
3553
+ }
3501
3554
3502
3555
var opt = {
3503
3556
method : method ,
@@ -3828,6 +3881,7 @@ var API_MAP = {
3828
3881
multipartAbort : multipartAbort ,
3829
3882
3830
3883
// 工具方法
3884
+ request : request ,
3831
3885
getObjectUrl : getObjectUrl ,
3832
3886
getAuth : getAuth ,
3833
3887
getV4Auth : getV4Auth ,
0 commit comments