Skip to content

Commit 28f145e

Browse files
authored
Merge pull request #91 from dt3310321/s3
S3
2 parents 10e7350 + 895f272 commit 28f145e

File tree

4 files changed

+300
-29
lines changed

4 files changed

+300
-29
lines changed

qcloud_cos/cos_client.py

Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2097,6 +2097,233 @@ def get_bucket_policy(self, Bucket, **kwargs):
20972097
data = {'Policy': json.dumps(rt.json())}
20982098
return data
20992099

2100+
def put_bucket_domain(self, Bucket, DomainConfiguration={}, **kwargs):
2101+
"""设置bucket的自定义域名
2102+
2103+
:param Bucket(string): 存储桶名称.
2104+
:param ReplicationConfiguration(dict): 设置Bucket的自定义域名规则.
2105+
:param kwargs(dict): 设置请求headers.
2106+
:return: None.
2107+
2108+
.. code-block:: python
2109+
2110+
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
2111+
client = CosS3Client(config)
2112+
# 设置bucket自定义域名配置
2113+
domain_config = {
2114+
'DomainRule': [
2115+
{
2116+
'Name': 'www.abc.com',
2117+
'Type': 'REST',
2118+
'Status': 'ENABLED',
2119+
'ForcedReplacement': 'CNAME'
2120+
},
2121+
]
2122+
}
2123+
response = client.put_bucket_domain(
2124+
Bucket='bucket',
2125+
DomainConfiguration=domain_config
2126+
)
2127+
"""
2128+
lst = ['<DomainRule>', '</DomainRule>'] # 类型为list的标签
2129+
xml_config = format_xml(data=DomainConfiguration, root='DomainConfiguration', lst=lst)
2130+
headers = mapped(kwargs)
2131+
headers['Content-MD5'] = get_md5(xml_config)
2132+
headers['Content-Type'] = 'application/xml'
2133+
params = {'domain': ''}
2134+
url = self._conf.uri(bucket=Bucket)
2135+
logger.info("put bucket domain, url=:{url} ,headers=:{headers}".format(
2136+
url=url,
2137+
headers=headers))
2138+
rt = self.send_request(
2139+
method='PUT',
2140+
url=url,
2141+
bucket=Bucket,
2142+
data=xml_config,
2143+
auth=CosS3Auth(self._conf, params=params),
2144+
headers=headers,
2145+
params=params)
2146+
return None
2147+
2148+
def get_bucket_domain(self, Bucket, **kwargs):
2149+
"""获取bucket 自定义域名配置
2150+
2151+
:param Bucket(string): 存储桶名称.
2152+
:param kwargs(dict): 设置请求headers.
2153+
:return(dict): Bucket对应的自定义域名配置.
2154+
2155+
.. code-block:: python
2156+
2157+
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
2158+
client = CosS3Client(config)
2159+
# 获取bucket自定义域名配置
2160+
response = client.get_bucket_domain(
2161+
Bucket='bucket'
2162+
)
2163+
"""
2164+
headers = mapped(kwargs)
2165+
params = {'domain': ''}
2166+
url = self._conf.uri(bucket=Bucket)
2167+
logger.info("get bucket domain, url=:{url} ,headers=:{headers}".format(
2168+
url=url,
2169+
headers=headers))
2170+
rt = self.send_request(
2171+
method='GET',
2172+
url=url,
2173+
bucket=Bucket,
2174+
auth=CosS3Auth(self._conf, params=params),
2175+
headers=headers,
2176+
params=params)
2177+
data = xml_to_dict(rt.content)
2178+
format_dict(data, ['DomainRule'])
2179+
if 'x-cos-domain-txt-verification' in rt.headers:
2180+
data['x-cos-domain-txt-verification'] = rt.headers['x-cos-domain-txt-verification']
2181+
return data
2182+
2183+
def delete_bucket_domain(self, Bucket, **kwargs):
2184+
"""删除bucket 自定义域名配置
2185+
2186+
:param Bucket(string): 存储桶名称.
2187+
:param kwargs(dict): 设置请求headers.
2188+
:return(dict): None.
2189+
2190+
.. code-block:: python
2191+
2192+
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
2193+
client = CosS3Client(config)
2194+
# 获取bucket自定义域名配置
2195+
response = client.delete_bucket_domain(
2196+
Bucket='bucket'
2197+
)
2198+
"""
2199+
headers = mapped(kwargs)
2200+
params = {'domain': ''}
2201+
url = self._conf.uri(bucket=Bucket)
2202+
logger.info("get bucket domain, url=:{url} ,headers=:{headers}".format(
2203+
url=url,
2204+
headers=headers))
2205+
rt = self.send_request(
2206+
method='DELETE',
2207+
url=url,
2208+
bucket=Bucket,
2209+
auth=CosS3Auth(self._conf, params=params),
2210+
headers=headers,
2211+
params=params)
2212+
return None
2213+
2214+
def put_bucket_origin(self, Bucket, OriginConfiguration={}, **kwargs):
2215+
"""设置bucket的回源
2216+
2217+
:param Bucket(string): 存储桶名称.
2218+
:param ReplicationConfiguration(dict): 设置Bucket的回源规则.
2219+
:param kwargs(dict): 设置请求headers.
2220+
:return: None.
2221+
2222+
.. code-block:: python
2223+
2224+
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
2225+
client = CosS3Client(config)
2226+
# 设置bucket自定义域名配置
2227+
origin_config = {
2228+
'OriginRule': [
2229+
{
2230+
'OriginType': 'Redirect',
2231+
'OriginInfo': {
2232+
'HostName': 'www.abc.com',
2233+
'Protocol': 'HTTP'
2234+
}
2235+
},
2236+
]
2237+
}
2238+
response = client.put_bucket_origin(
2239+
Bucket='bucket',
2240+
OriginConfiguration=origin_config
2241+
)
2242+
"""
2243+
lst = ['<OriginRule>', '</OriginRule>'] # 类型为list的标签
2244+
xml_config = format_xml(data=OriginConfiguration, root='OriginConfiguration', lst=lst)
2245+
headers = mapped(kwargs)
2246+
headers['Content-MD5'] = get_md5(xml_config)
2247+
headers['Content-Type'] = 'application/xml'
2248+
params = {'origin': ''}
2249+
url = self._conf.uri(bucket=Bucket)
2250+
logger.info("put bucket origin, url=:{url} ,headers=:{headers}".format(
2251+
url=url,
2252+
headers=headers))
2253+
rt = self.send_request(
2254+
method='PUT',
2255+
url=url,
2256+
bucket=Bucket,
2257+
data=xml_config,
2258+
auth=CosS3Auth(self._conf, params=params),
2259+
headers=headers,
2260+
params=params)
2261+
return None
2262+
2263+
def get_bucket_origin(self, Bucket, **kwargs):
2264+
"""获取bucket 回源配置
2265+
2266+
:param Bucket(string): 存储桶名称.
2267+
:param kwargs(dict): 设置请求headers.
2268+
:return(dict): Bucket对应的自定义域名配置.
2269+
2270+
.. code-block:: python
2271+
2272+
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
2273+
client = CosS3Client(config)
2274+
# 获取bucket自定义域名配置
2275+
response = client.get_bucket_origin(
2276+
Bucket='bucket'
2277+
)
2278+
"""
2279+
headers = mapped(kwargs)
2280+
params = {'origin': ''}
2281+
url = self._conf.uri(bucket=Bucket)
2282+
logger.info("get bucket origin, url=:{url} ,headers=:{headers}".format(
2283+
url=url,
2284+
headers=headers))
2285+
rt = self.send_request(
2286+
method='GET',
2287+
url=url,
2288+
bucket=Bucket,
2289+
auth=CosS3Auth(self._conf, params=params),
2290+
headers=headers,
2291+
params=params)
2292+
data = xml_to_dict(rt.content)
2293+
format_dict(data, ['OriginRule'])
2294+
return data
2295+
2296+
def delete_bucket_origin(self, Bucket, **kwargs):
2297+
"""删除bucket 回源配置
2298+
2299+
:param Bucket(string): 存储桶名称.
2300+
:param kwargs(dict): 设置请求headers.
2301+
:return(dict): None.
2302+
2303+
.. code-block:: python
2304+
2305+
config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token) # 获取配置对象
2306+
client = CosS3Client(config)
2307+
# 获取bucket自定义域名配置
2308+
response = client.delete_bucket_origin(
2309+
Bucket='bucket'
2310+
)
2311+
"""
2312+
headers = mapped(kwargs)
2313+
params = {'origin': ''}
2314+
url = self._conf.uri(bucket=Bucket)
2315+
logger.info("get bucket origin, url=:{url} ,headers=:{headers}".format(
2316+
url=url,
2317+
headers=headers))
2318+
rt = self.send_request(
2319+
method='DELETE',
2320+
url=url,
2321+
bucket=Bucket,
2322+
auth=CosS3Auth(self._conf, params=params),
2323+
headers=headers,
2324+
params=params)
2325+
return None
2326+
21002327
# service interface begin
21012328
def list_buckets(self, **kwargs):
21022329
"""列出所有bucket

qcloud_cos/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11

2-
__version__ = '5.1.7.0'
2+
__version__ = '5.1.7.1'

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.7.0',
19+
version='1.7.1',
2020
url='https://www.qcloud.com/',
2121
license='MIT',
2222
author='tiedu, lewzylu, channingliu',

0 commit comments

Comments
 (0)