Skip to content

Commit 3ac38c0

Browse files
committed
feat: update auth headers
1 parent 4537cf7 commit 3ac38c0

File tree

2 files changed

+4
-21
lines changed

2 files changed

+4
-21
lines changed

volcenginesdkcore/api_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -539,7 +539,7 @@ def update_params_for_auth(self, host, path, method, headers, querys, auth_setti
539539
body = json.dumps(body)
540540
else:
541541
body = ""
542-
SignerV4.sign(path, method, headers, body, dict(querys),
542+
SignerV4.sign(path, method, headers, body, querys,
543543
self.configuration.ak, self.configuration.sk, self.configuration.region, service)
544544

545545
def __deserialize_file(self, response):

volcenginesdkcore/signv4.py

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import datetime
66
import hmac
77
import hashlib
8-
from six.moves.urllib.parse import quote
8+
from six.moves.urllib.parse import urlencode
99

1010

1111
class SignerV4(object):
@@ -41,9 +41,8 @@ def sign(path, method, headers, body, query, ak, sk, region, service):
4141

4242
signed_headers_string = ';'.join(sorted(signed_headers.keys()))
4343

44-
canonical_request = '\n'.join(
45-
[method, path, SignerV4.norm_query(query), signed_str,
46-
signed_headers_string, body_hash])
44+
# The sorted() method sorts tuples by default, using the first item in each tuple.
45+
canonical_request = '\n'.join([method, path, urlencode(sorted(query)), signed_str, signed_headers_string, body_hash])
4746
credential_scope = '/'.join([format_date[:8], region, service, 'request'])
4847
signing_str = '\n'.join(['HMAC-SHA256', format_date, credential_scope,
4948
hashlib.sha256(canonical_request.encode('utf-8')).hexdigest()])
@@ -67,19 +66,3 @@ def get_signing_secret_key_v4(sk, date, region, service):
6766
@staticmethod
6867
def hmac_sha256(key, msg):
6968
return hmac.new(key, msg.encode('utf-8'), hashlib.sha256).digest()
70-
71-
@staticmethod
72-
def norm_query(params):
73-
query = ''
74-
for key in sorted(params.keys()):
75-
if type(params[key]) == list:
76-
for k in params[key]:
77-
query = query + quote(key, safe='-_.~') + '=' + quote(k, safe='-_.~') + '&'
78-
elif type(params[key]) in [int, float, bool]:
79-
# The argument to urllib.parse.quote must be a string
80-
ele = str(params[key])
81-
query = query + quote(key, safe='-_.~') + '=' + quote(ele, safe='-_.~') + '&'
82-
else:
83-
query = query + quote(key, safe='-_.~') + '=' + quote(params[key], safe='-_.~') + '&'
84-
query = query[:-1]
85-
return query.replace('+', '%20')

0 commit comments

Comments
 (0)