Improve build URL query string

This commit is contained in:
Zhong Lufan 2023-01-29 15:25:28 +08:00
parent b5193a284c
commit c2126d26ce
No known key found for this signature in database
GPG Key ID: BE2B3A1E76AD7D04
1 changed files with 10 additions and 22 deletions

View File

@ -27,18 +27,12 @@ aliapi_rpc() {
local _api_action=$4
shift 4
local -A _api_params
_api_params=(
["AccessKeyId"]=$_AliAccessKeyId
["Action"]=$_api_action
["Format"]="JSON"
["SignatureMethod"]="HMAC-SHA1"
["SignatureVersion"]="1.0"
["SignatureNonce"]=$(_aliapi_signature_nonce)
["Timestamp"]=$(_aliapi_timestamp_rpc)
["Version"]=$_api_version
)
local _query_str _signature_nonce _timestamp
_signature_nonce=$(_aliapi_urlencode "$(_aliapi_signature_nonce)")
_timestamp=$(_aliapi_urlencode "$(_aliapi_timestamp_rpc)")
_query_str="AccessKeyId=$_AliAccessKeyId&Action=$_api_action&Format=JSON&SignatureMethod=HMAC-SHA1&SignatureVersion=1.0&SignatureNonce=$_signature_nonce&Timestamp=$_timestamp&Version=$_api_version&"
# 解析其余参数
local _key _value
while [[ $# -ne 0 ]]
do
case $1 in
@ -47,7 +41,11 @@ aliapi_rpc() {
echo "aliapi_rpc: '$1' has no value" >&2
return 2
fi
_api_params[${1:2}]="$2"
_key=${1:2}
_value=$2
[[ $_value =~ .+\(\)$ && $(type -t "${_value:0:-2}") == "function" ]] && _value=$(${_value:0:-2})
_value=$(_aliapi_urlencode "$_value")
_query_str+="$_key=$_value&"
shift 2
;;
*)
@ -57,16 +55,6 @@ aliapi_rpc() {
esac
done
local _query_str=""
local _key _value
for _key in "${!_api_params[@]}"; do
_value=${_api_params[$_key]}
# 参数值如果是以 () 结束,代表需要执行函数获取值,如果函数不存在,使用原始值。
[[ $_value =~ .+\(\)$ && $(type -t "${_value:0:-2}") == "function" ]] && _value=$(${_value:0:-2})
_value=$(_aliapi_urlencode "$_value")
_query_str+="$_key=$_value&"
done
local _signature
_signature=$(_aliapi_signature_rpc "$_http_method" "${_query_str:0:-1}")
_query_str+="Signature=$(_aliapi_urlencode "$_signature")"