Skip to content

Commit e32578c

Browse files
authored
Merge pull request #197 from zhy1985555/master
优化匿名访问接口\优化对象标签接口
2 parents e611c26 + 3ae2661 commit e32578c

File tree

5 files changed

+25
-19
lines changed

5 files changed

+25
-19
lines changed

qcloud_cos/cos_auth.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,13 @@ def __init__(self, conf, key=None, params={}, expire=10000, sign_host=None):
7474
self._path = u'/'
7575

7676
def __call__(self, r):
77+
78+
# 匿名请求直接返回
79+
if self._anonymous:
80+
r.headers['Authorization'] = ""
81+
logger.debug("anonymous reqeust")
82+
return r
83+
7784
path = self._path
7885
uri_params = self._params
7986
headers = filter_headers(r.headers)
@@ -128,8 +135,6 @@ def __call__(self, r):
128135
headers=';'.join(sorted(headers.keys())),
129136
sign=sign
130137
)
131-
if self._anonymous:
132-
r.headers['Authorization'] = ""
133138
logger.debug("sign_key" + str(sign_key))
134139
logger.debug(r.headers['Authorization'])
135140
logger.debug("request headers: " + str(r.headers))

qcloud_cos/cos_client.py

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,9 @@ def __init__(self, Appid=None, Region=None, SecretId=None, SecretKey=None, Token
108108
elif (Access_id and Access_key):
109109
self._secret_id = self.convert_secret_value(Access_id)
110110
self._secret_key = self.convert_secret_value(Access_key)
111+
elif self._anonymous:
112+
self._secret_id = None
113+
self._secret_key = None
111114
else:
112115
raise CosClientError('SecretId and SecretKey is Required!')
113116

@@ -2743,13 +2746,12 @@ def delete_bucket_inventory(self, Bucket, Id, **kwargs):
27432746
params=params)
27442747
return None
27452748

2746-
def put_object_tagging(self, Bucket, Key, Tagging={}, VersionId=None, **kwargs):
2749+
def put_object_tagging(self, Bucket, Key, Tagging={}, **kwargs):
27472750
"""设置object的标签
27482751
27492752
:param Bucket(string): 存储桶名称.
27502753
:param Key(string): COS路径.
27512754
:param Tagging(dict): Object的标签集合
2752-
:param VersionId(string): 对象版本ID,可选.不指定时为Object的最新版本.
27532755
:param kwargs(dict): 设置请求headers.
27542756
:return: None.
27552757
@@ -2777,11 +2779,10 @@ def put_object_tagging(self, Bucket, Key, Tagging={}, VersionId=None, **kwargs):
27772779
lst = ['<Tag>', '</Tag>'] # 类型为list的标签
27782780
xml_config = format_xml(data=Tagging, root='Tagging', lst=lst)
27792781
headers = mapped(kwargs)
2780-
headers['Content-MD5'] = get_md5(xml_config)
2781-
headers['Content-Type'] = 'application/xml'
27822782
params = {'tagging': ''}
2783-
if VersionId:
2784-
params['VersionId'] = VersionId
2783+
if 'versionId' in headers:
2784+
params['versionId'] = headers['versionId']
2785+
del headers['versionId']
27852786
url = self._conf.uri(bucket=Bucket, path=Key)
27862787
logger.info("put object tagging, url=:{url} ,headers=:{headers}".format(
27872788
url=url,
@@ -2796,12 +2797,11 @@ def put_object_tagging(self, Bucket, Key, Tagging={}, VersionId=None, **kwargs):
27962797
params=params)
27972798
return None
27982799

2799-
def get_object_tagging(self, Bucket, Key, VersionId=None, **kwargs):
2800+
def get_object_tagging(self, Bucket, Key, **kwargs):
28002801
"""获取object标签
28012802
28022803
:param Bucket(string): 存储桶名称.
28032804
:param Key(string): COS路径.
2804-
:param VersionId(string): 对象版本ID,可选.不指定时为Object的最新版本.
28052805
:param kwargs(dict): 设置请求headers.
28062806
:return(dict): Bucket对应的标签.
28072807
@@ -2817,8 +2817,9 @@ def get_object_tagging(self, Bucket, Key, VersionId=None, **kwargs):
28172817
"""
28182818
headers = mapped(kwargs)
28192819
params = {'tagging': ''}
2820-
if VersionId:
2821-
params['VersionId'] = VersionId
2820+
if 'versionId' in headers:
2821+
params['versionId'] = headers['versionId']
2822+
del headers['versionId']
28222823
url = self._conf.uri(bucket=Bucket, path=Key)
28232824
logger.info("get object tagging, url=:{url} ,headers=:{headers}".format(
28242825
url=url,
@@ -2835,12 +2836,11 @@ def get_object_tagging(self, Bucket, Key, VersionId=None, **kwargs):
28352836
format_dict(data['TagSet'], ['Tag'])
28362837
return data
28372838

2838-
def delete_object_tagging(self, Bucket, Key, VersionId=None, **kwargs):
2839+
def delete_object_tagging(self, Bucket, Key, **kwargs):
28392840
"""删除object标签
28402841
28412842
:param Bucket(string): 存储桶名称.
28422843
:param Key(string): COS路径.
2843-
:param VersionId(string): 对象版本ID,可选.不指定时为Object的最新版本.
28442844
:param kwargs(dict): 设置请求headers.
28452845
:return(dict): None.
28462846
@@ -2856,8 +2856,9 @@ def delete_object_tagging(self, Bucket, Key, VersionId=None, **kwargs):
28562856
"""
28572857
headers = mapped(kwargs)
28582858
params = {'tagging': ''}
2859-
if VersionId:
2860-
params['VersionId'] = VersionId
2859+
if 'versionId' in headers:
2860+
params['versionId'] = headers['versionId']
2861+
del headers['versionId']
28612862
url = self._conf.uri(bucket=Bucket, path=Key)
28622863
logger.info("delete object tagging, url=:{url} ,headers=:{headers}".format(
28632864
url=url,

qcloud_cos/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '5.1.9.14'
1+
__version__ = '5.1.9.15'

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ def long_description():
1616

1717
setup(
1818
name='cos-python-sdk-v5',
19-
version='1.9.14',
19+
version='1.9.15',
2020
url='https://www.qcloud.com/',
2121
license='MIT',
2222
author='tiedu, lewzylu, channingliu',

ut/test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1114,7 +1114,7 @@ def test_put_get_delete_bucket_tagging():
11141114
)
11151115

11161116

1117-
def test_put_get_delete_bucket_tagging():
1117+
def test_put_get_delete_object_tagging():
11181118
"""测试设置获取删除object标签"""
11191119
tagging_config = {
11201120
'TagSet': {

0 commit comments

Comments
 (0)