123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125 |
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- class CosRegionInfo(object):
- def __init__(self, region=None, hostname=None, download_hostname=None, *args, **kwargs):
- self._hostname = None
- self._download_hostname = None
- if region in ['sh', 'shanghai']:
- self._hostname = 'sh.file.myqcloud.com'
- self._download_hostname = 'cossh.myqcloud.com'
- elif region in ['gz', 'guangzhou']:
- self._hostname = 'gz.file.myqcloud.com'
- self._download_hostname = 'cosgz.myqcloud.com'
- elif region in ['tj', 'tianjin', 'tianjing']: # bug: for compact previous release
- self._hostname = 'tj.file.myqcloud.com'
- self._download_hostname = 'costj.myqcloud.com'
- elif region in ['sgp', 'singapore']:
- self._hostname = 'sgp.file.myqcloud.com'
- self._download_hostname = 'cosspg.myqcloud.com'
- elif region is not None:
- self._hostname = '{region}.file.myqcloud.com'.format(region=region)
- self._download_hostname = 'cos{region}.myqcloud.com'.format(region=region)
- else:
- if hostname and download_hostname:
- self._hostname = hostname
- self._download_hostname = download_hostname
- else:
- raise ValueError("region or [hostname, download_hostname] must be set, and region should be sh/gz/tj/sgp")
- @property
- def hostname(self):
- assert self._hostname is not None
- return self._hostname
- @property
- def download_hostname(self):
- assert self._download_hostname is not None
- return self._download_hostname
- class CosConfig(object):
- """CosConfig 有关cos的配置"""
- def __init__(self, timeout=300, sign_expired=300, enable_https=False, *args, **kwargs):
- self._region = CosRegionInfo(*args, **kwargs)
- self._user_agent = 'cos-python-sdk-v4'
- self._timeout = timeout
- self._sign_expired = sign_expired
- self._enable_https = enable_https
- if self._enable_https:
- self._protocol = "https"
- else:
- self._protocol = "http"
- def get_endpoint(self):
- """获取域名地址
- :return:
- """
- # tmpl = "%s://%s/files/v2"
- return self._protocol + "://" + self._region.hostname + "/files/v2"
- def get_download_hostname(self):
- return self._region.download_hostname
- def get_user_agent(self):
- """获取HTTP头中的user_agent
- :return:
- """
- return self._user_agent
- def set_timeout(self, time_out):
- """设置连接超时, 单位秒
- :param time_out:
- :return:
- """
- assert isinstance(time_out, int)
- self._timeout = time_out
- def get_timeout(self):
- """获取连接超时,单位秒
- :return:
- """
- return self._timeout
- def set_sign_expired(self, expired):
- """设置签名过期时间, 单位秒
- :param expired:
- :return:
- """
- assert isinstance(expired, int)
- self._sign_expired = expired
- def get_sign_expired(self):
- """获取签名过期时间, 单位秒
- :return:
- """
- return self._sign_expired
- @property
- def enable_https(self):
- assert self._enable_https is not None
- return self._enable_https
- @enable_https.setter
- def enable_https(self, val):
- if val != self._enable_https:
- if val:
- self._enable_https = val
- self._protocol = "https"
- else:
- self._enable_https = val
- self._protocol = "http"
|