1
1
# -*- coding: utf-8 -*-
2
2
import hmac
3
3
import time
4
- import urllib
5
4
import hashlib
6
5
import logging
7
6
import requests
8
- import sys
9
- from six .moves .urllib .parse import quote , urlparse , unquote , urlencode
7
+ from urllib .parse import urlparse , urlencode , quote , unquote
10
8
from requests .auth import AuthBase
11
-
12
- if sys .version > '3' :
13
- from coscmd .cos_global import Version
14
- from coscmd .cos_comm import to_bytes
15
- else :
16
- from cos_global import Version
17
- from cos_comm import to_bytes
9
+ from coscmd .cos_global import Version
10
+ from coscmd .cos_comm import to_bytes
18
11
19
12
logger = logging .getLogger ("coscmd" )
20
13
@@ -35,7 +28,8 @@ def __call__(self, r):
35
28
tmp_r = {}
36
29
rt = urlparse (uri )
37
30
if rt .query != "" and ("&" in rt .query or '=' in rt .query ):
38
- uri_params = dict (map (lambda s : s .lower ().split ('=' ), rt .query .split ('&' )))
31
+ uri_params = dict (
32
+ map (lambda s : s .lower ().split ('=' ), rt .query .split ('&' )))
39
33
elif rt .query != "" :
40
34
uri_params = {rt .query : "" }
41
35
else :
@@ -44,29 +38,36 @@ def __call__(self, r):
44
38
tmp_r = r .headers
45
39
r .headers = {}
46
40
r .headers ['Host' ] = rt .netloc
47
- headers = dict ([(k .lower (), quote (v ).lower ()) for k , v in r .headers .items ()])
41
+ headers = dict ([(k .lower (), quote (v ).lower ())
42
+ for k , v in r .headers .items ()])
48
43
format_str = "{method}\n {host}\n {params}\n {headers}\n " .format (
49
44
method = method .lower (),
50
45
host = unquote (rt .path ),
51
46
params = urlencode (uri_params ),
52
- headers = '&' .join (map (lambda p : (lambda x , y : "%s=%s" % (x , y ))(* p ), sorted (headers .items ())))
53
- )
47
+ headers = '&' .join (map (lambda p : (lambda x , y : "%s=%s" %
48
+ (x , y ))(* p ), sorted (headers .items ())))
49
+ )
54
50
start_sign_time = int (time .time ())
55
- sign_time = "{bg_time};{ed_time}" .format (bg_time = start_sign_time - 60 , ed_time = start_sign_time + self ._expire )
51
+ sign_time = "{bg_time};{ed_time}" .format (
52
+ bg_time = start_sign_time - 60 , ed_time = start_sign_time + self ._expire )
56
53
sha1 = hashlib .sha1 ()
57
54
sha1 .update (to_bytes (format_str ))
58
55
59
- str_to_sign = "sha1\n {time}\n {sha1}\n " .format (time = sign_time , sha1 = sha1 .hexdigest ())
56
+ str_to_sign = "sha1\n {time}\n {sha1}\n " .format (
57
+ time = sign_time , sha1 = sha1 .hexdigest ())
60
58
61
- sign_key = hmac .new (to_bytes (self ._secret_key ), to_bytes (sign_time ), hashlib .sha1 ).hexdigest ()
62
- sign = hmac .new (to_bytes (sign_key ), to_bytes (str_to_sign ), hashlib .sha1 ).hexdigest ()
59
+ sign_key = hmac .new (to_bytes (self ._secret_key ), to_bytes (
60
+ sign_time ), hashlib .sha1 ).hexdigest ()
61
+ sign = hmac .new (to_bytes (sign_key ), to_bytes (
62
+ str_to_sign ), hashlib .sha1 ).hexdigest ()
63
63
sign_tpl = "q-sign-algorithm=sha1&q-ak={ak}&q-sign-time={sign_time}&q-key-time={key_time}&q-header-list={headers}&q-url-param-list={params}&q-signature={sign}"
64
64
r .headers = tmp_r
65
65
r .headers ['Authorization' ] = sign_tpl .format (
66
66
ak = self ._access_id ,
67
67
sign_time = sign_time ,
68
68
key_time = sign_time ,
69
- params = ';' .join (sorted (map (lambda k : k .lower (), uri_params .keys ()))),
69
+ params = ';' .join (
70
+ sorted (map (lambda k : k .lower (), uri_params .keys ()))),
70
71
headers = ';' .join (sorted (headers .keys ())),
71
72
sign = sign
72
73
)
0 commit comments