Skip to content

Commit 94622de

Browse files
committed
refractor the code of create anti leech url
1 parent 7966453 commit 94622de

File tree

2 files changed

+23
-15
lines changed

2 files changed

+23
-15
lines changed

examples/cdn_manager.py

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,14 +89,18 @@ def print_result(result):
8989
print('构建时间戳防盗链')
9090

9191
# 时间戳防盗链密钥,后台获取
92-
encrypt_key = '...'
92+
encrypt_key = 'xxx'
9393

9494
# 原始文件名,必须是utf8编码
9595
test_file_name1 = '基本概括.mp4'
9696
test_file_name2 = '2017/01/07/test.png'
9797

9898
# 查询参数列表
99-
query_string = 'name=七牛&year=2017'
99+
query_string_dict = {
100+
'name': '七牛',
101+
'year': 2017,
102+
'年龄': 28,
103+
}
100104

101105
# 带访问协议的域名
102106
host = 'http://video.example.com'
@@ -105,17 +109,17 @@ def print_result(result):
105109
deadline = int(time.time()) + 3600
106110

107111
# 带查询参数,中文文件名
108-
signed_url1 = create_timestamp_anti_leech_url(host, test_file_name1, query_string, encrypt_key, deadline)
112+
signed_url1 = create_timestamp_anti_leech_url(host, test_file_name1, query_string_dict, encrypt_key, deadline)
109113
print(signed_url1)
110114

111115
# 带查询参数,英文文件名
112-
signed_url2 = create_timestamp_anti_leech_url(host, test_file_name2, query_string, encrypt_key, deadline)
116+
signed_url2 = create_timestamp_anti_leech_url(host, test_file_name2, query_string_dict, encrypt_key, deadline)
113117
print(signed_url2)
114118

115119
# 不带查询参数,中文文件名
116-
signed_url3 = create_timestamp_anti_leech_url(host, test_file_name1, '', encrypt_key, deadline)
120+
signed_url3 = create_timestamp_anti_leech_url(host, test_file_name1, None, encrypt_key, deadline)
117121
print(signed_url3)
118122

119123
# 不带查询参数,英文文件名
120-
signed_url4 = create_timestamp_anti_leech_url(host, test_file_name2, '', encrypt_key, deadline)
124+
signed_url4 = create_timestamp_anti_leech_url(host, test_file_name2, None, encrypt_key, deadline)
121125
print(signed_url4)

qiniu/services/cdn/manager.py

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -162,22 +162,26 @@ def __post(self, url, data=None):
162162
return http._post_with_auth_and_headers(url, data, self.auth, headers)
163163

164164

165-
def create_timestamp_anti_leech_url(host, file_name, query_string, encrypt_key, deadline):
165+
def create_timestamp_anti_leech_url(host, file_name, query_string_dict, encrypt_key, deadline):
166166
"""
167167
创建时间戳防盗链
168168
169169
Args:
170-
host: 带访问协议的域名
171-
file_name: 原始文件名,不需要urlencode
172-
query_string: 查询参数,不需要urlencode
173-
encrypt_key: 时间戳防盗链密钥
174-
deadline: 链接有效期时间戳(以秒为单位)
170+
host: 带访问协议的域名
171+
file_name: 原始文件名,不需要urlencode
172+
query_string_dict: 查询参数,不需要urlencode
173+
encrypt_key: 时间戳防盗链密钥
174+
deadline: 链接有效期时间戳(以秒为单位)
175175
176176
Returns:
177177
带时间戳防盗链鉴权访问链接
178178
"""
179-
if len(query_string) > 0:
180-
url_to_sign = '{0}/{1}?{2}'.format(host, urlencode(file_name), urlencode(query_string))
179+
if query_string_dict is not None and len(query_string_dict) > 0:
180+
query_string_items = []
181+
for k, v in query_string_dict.items():
182+
query_string_items.append('{0}={1}'.format(urlencode(str(k)), urlencode(str(v))))
183+
query_string = '&'.join(query_string_items)
184+
url_to_sign = '{0}/{1}?{2}'.format(host, urlencode(file_name), query_string)
181185
else:
182186
url_to_sign = '{0}/{1}'.format(host, urlencode(file_name))
183187

@@ -186,7 +190,7 @@ def create_timestamp_anti_leech_url(host, file_name, query_string, encrypt_key,
186190
str_to_sign = '{0}{1}{2}'.format(encrypt_key, path, expire_hex).encode()
187191
sign_str = hashlib.md5(str_to_sign).hexdigest()
188192

189-
if len(query_string) > 0:
193+
if query_string_dict is not None and len(query_string_dict) > 0:
190194
signed_url = '{0}&sign={1}&t={2}'.format(url_to_sign, sign_str, expire_hex)
191195
else:
192196
signed_url = '{0}?sign={1}&t={2}'.format(url_to_sign, sign_str, expire_hex)

0 commit comments

Comments
 (0)