Skip to content

Commit 2b5e438

Browse files
dt3310321tiedu
andauthored
S3 (#163)
* add get_object_url * modify ut Co-authored-by: tiedu <tiedu@tencent.com>
1 parent 7c809fc commit 2b5e438

File tree

3 files changed

+62
-29
lines changed

3 files changed

+62
-29
lines changed

.travis.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ notifications:
2020
- fysntian@tencent.com
2121
script:
2222
- pycodestyle --max-line-length=200 qcloud_cos/.
23+
- pycodestyle --max-line-length=200 ut/.
2324
- nosetests -s -v ut/
2425
deploy:
2526
provider: pypi

qcloud_cos/cos_client.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -533,6 +533,26 @@ def get_presigned_download_url(self, Bucket, Key, Expired=300, Params={}, Header
533533
"""
534534
return self.get_presigned_url(Bucket, Key, 'GET', Expired, Params, Headers)
535535

536+
def get_object_url(self, Bucket, Key):
537+
"""生成对象访问的url
538+
539+
:param Bucket(string): 存储桶名称.
540+
:param Key(string): COS路径.
541+
:return(string): 对象访问的URL.
542+
543+
.. code-block:: python
544+
545+
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
546+
client = CosS3Client(config)
547+
# 获取预签名链接
548+
response = client.get_object_url(
549+
Bucket='bucket',
550+
Key='test.txt'
551+
)
552+
"""
553+
url = self._conf.uri(bucket=Bucket, path=Key)
554+
return url
555+
536556
def delete_object(self, Bucket, Key, **kwargs):
537557
"""单文件删除接口
538558

ut/test.py

Lines changed: 41 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -83,18 +83,18 @@ def gen_file(path, size):
8383

8484

8585
def print_error_msg(e):
86-
print (e.get_origin_msg())
87-
print (e.get_digest_msg())
88-
print (e.get_status_code())
89-
print (e.get_error_code())
90-
print (e.get_error_msg())
91-
print (e.get_resource_location())
92-
print (e.get_trace_id())
93-
print (e.get_request_id())
86+
print(e.get_origin_msg())
87+
print(e.get_digest_msg())
88+
print(e.get_status_code())
89+
print(e.get_error_code())
90+
print(e.get_error_msg())
91+
print(e.get_resource_location())
92+
print(e.get_trace_id())
93+
print(e.get_request_id())
94+
9495

9596
def percentage(consumed_bytes, total_bytes):
9697
"""进度条回调函数,计算当前完成的百分比
97-
9898
:param consumed_bytes: 已经上传/下载的数据量
9999
:param total_bytes: 总数据量
100100
"""
@@ -103,16 +103,17 @@ def percentage(consumed_bytes, total_bytes):
103103
print('\r{0}% '.format(rate))
104104
sys.stdout.flush()
105105

106+
106107
def setUp():
107-
print ("start test...")
108-
print ("start create bucket " + test_bucket)
108+
print("start test...")
109+
print("start create bucket " + test_bucket)
109110
_create_test_bucket(test_bucket)
110111
_create_test_bucket(copy_test_bucket)
111112
_upload_test_file(copy_test_bucket, test_object)
112113

113114

114115
def tearDown():
115-
print ("function teardown")
116+
print("function teardown")
116117

117118

118119
def test_put_get_delete_object_10MB():
@@ -445,7 +446,7 @@ def test_get_presigned_url():
445446
Key='中文.txt'
446447
)
447448
assert url
448-
print (url)
449+
print(url)
449450

450451

451452
def test_get_bucket_location():
@@ -722,7 +723,7 @@ def test_upload_file_multithreading():
722723
ed = time.time() # 记录结束时间
723724
if os.path.exists(file_name):
724725
os.remove(file_name)
725-
print (ed - st)
726+
print(ed - st)
726727

727728

728729
def test_upload_file_with_progress_callback():
@@ -818,7 +819,7 @@ def test_put_get_bucket_logging():
818819
response = logging_client.get_bucket_logging(
819820
Bucket=logging_bucket
820821
)
821-
print (response)
822+
print(response)
822823
assert response['LoggingEnabled']['TargetBucket'] == logging_bucket
823824
assert response['LoggingEnabled']['TargetPrefix'] == 'test'
824825

@@ -982,8 +983,8 @@ def test_put_get_delete_bucket_domain():
982983
}
983984

984985
response = client.delete_bucket_domain(
985-
Bucket=test_bucket
986-
)
986+
Bucket=test_bucket
987+
)
987988

988989
time.sleep(2)
989990
response = client.put_bucket_domain(
@@ -1145,7 +1146,7 @@ def test_put_get_delete_bucket_referer():
11451146
response = client.get_bucket_referer(
11461147
Bucket=test_bucket,
11471148
)
1148-
assert len(response)==0
1149+
assert len(response) == 0
11491150

11501151

11511152
def test_put_get_traffic_limit():
@@ -1224,23 +1225,23 @@ def _test_get_object_sensitive_content_recognition():
12241225

12251226
def test_download_file():
12261227
"""测试断点续传下载接口"""
1227-
#测试普通下载
1228+
# 测试普通下载
12281229
client.download_file(copy_test_bucket, test_object, 'test_download_file.local')
12291230
if os.path.exists('test_download_file.local'):
12301231
os.remove('test_download_file.local')
1231-
1232+
12321233
# 测试限速下载
12331234
client.download_file(copy_test_bucket, test_object, 'test_download_traffic_limit.local', TrafficLimit='819200')
12341235
if os.path.exists('test_download_traffic_limit.local'):
12351236
os.remove('test_download_traffic_limit.local')
1236-
1237+
12371238
# 测试crc64校验开关
12381239
client.download_file(copy_test_bucket, test_object, 'test_download_crc.local', EnableCRC=True)
12391240
if os.path.exists('test_download_crc.local'):
12401241
os.remove('test_download_crc.local')
1241-
1242+
12421243
# 测试源文件的md5与下载下来后的文件md5
1243-
file_size = 25 # MB
1244+
file_size = 25 # MB
12441245
file_id = str(random.randint(0, 1000)) + str(random.randint(0, 1000))
12451246
file_name = "tmp" + file_id + "_" + str(file_size) + "MB"
12461247
gen_file(file_name, file_size)
@@ -1348,9 +1349,9 @@ def test_aes_client():
13481349
response = client_for_aes.create_multipart_upload(test_bucket, 'test_multi_upload')
13491350
uploadid = response['UploadId']
13501351
client_for_aes.upload_part(test_bucket, 'test_multi_upload', content, 1, uploadid)
1351-
client_for_aes.upload_part(test_bucket,'test_multi_upload', content, 2, uploadid)
1352-
response = client_for_aes.list_parts(test_bucket,'test_multi_upload', uploadid)
1353-
client_for_aes.complete_multipart_upload(test_bucket, 'test_multi_upload', uploadid, {'Part':response['Part']})
1352+
client_for_aes.upload_part(test_bucket, 'test_multi_upload', content, 2, uploadid)
1353+
response = client_for_aes.list_parts(test_bucket, 'test_multi_upload', uploadid)
1354+
client_for_aes.complete_multipart_upload(test_bucket, 'test_multi_upload', uploadid, {'Part': response['Part']})
13541355
response = client_for_aes.get_object(test_bucket, 'test_multi_upload')
13551356
response['Body'].get_stream_to_file('test_multi_upload_local')
13561357
with open('test_multi_upload_local', 'rb') as f:
@@ -1362,6 +1363,7 @@ def test_aes_client():
13621363

13631364
client_for_rsa.delete_object(test_bucket, 'test_multi_upload')
13641365

1366+
13651367
def test_rsa_client():
13661368
"""测试rsa加密客户端的上传下载操作"""
13671369
content = '123456' * 1024 + '1'
@@ -1397,9 +1399,9 @@ def test_rsa_client():
13971399
response = client_for_rsa.create_multipart_upload(test_bucket, 'test_multi_upload')
13981400
uploadid = response['UploadId']
13991401
client_for_rsa.upload_part(test_bucket, 'test_multi_upload', content, 1, uploadid)
1400-
client_for_rsa.upload_part(test_bucket,'test_multi_upload', content, 2, uploadid)
1401-
response = client_for_rsa.list_parts(test_bucket,'test_multi_upload', uploadid)
1402-
client_for_rsa.complete_multipart_upload(test_bucket, 'test_multi_upload', uploadid, {'Part':response['Part']})
1402+
client_for_rsa.upload_part(test_bucket, 'test_multi_upload', content, 2, uploadid)
1403+
response = client_for_rsa.list_parts(test_bucket, 'test_multi_upload', uploadid)
1404+
client_for_rsa.complete_multipart_upload(test_bucket, 'test_multi_upload', uploadid, {'Part': response['Part']})
14031405
response = client_for_rsa.get_object(test_bucket, 'test_multi_upload')
14041406
response['Body'].get_stream_to_file('test_multi_upload_local')
14051407
with open('test_multi_upload_local', 'rb') as f:
@@ -1538,8 +1540,18 @@ def test_live_channel():
15381540
assert (response)
15391541

15401542

1543+
def test_get_object_url():
1544+
"""测试获取对象访问URL"""
1545+
response = client.get_object_url(
1546+
Bucket=test_bucket,
1547+
Key='test.txt'
1548+
)
1549+
print(response)
1550+
1551+
15411552
if __name__ == "__main__":
15421553
setUp()
1554+
test_get_object_url()
15431555
"""
15441556
test_put_object_enable_md5()
15451557
test_upload_with_server_side_encryption()

0 commit comments

Comments
 (0)