cos_config.py 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. class CosRegionInfo(object):
  4. def __init__(self, region=None, hostname=None, download_hostname=None, *args, **kwargs):
  5. self._hostname = None
  6. self._download_hostname = None
  7. if region in ['sh', 'shanghai']:
  8. self._hostname = 'sh.file.myqcloud.com'
  9. self._download_hostname = 'cossh.myqcloud.com'
  10. elif region in ['gz', 'guangzhou']:
  11. self._hostname = 'gz.file.myqcloud.com'
  12. self._download_hostname = 'cosgz.myqcloud.com'
  13. elif region in ['tj', 'tianjin', 'tianjing']: # bug: for compact previous release
  14. self._hostname = 'tj.file.myqcloud.com'
  15. self._download_hostname = 'costj.myqcloud.com'
  16. elif region in ['sgp', 'singapore']:
  17. self._hostname = 'sgp.file.myqcloud.com'
  18. self._download_hostname = 'cosspg.myqcloud.com'
  19. elif region in ['cd', 'chengdu']:
  20. self._hostname = 'cd.file.myqcloud.com'
  21. self._download_hostname = 'coscd.myqcloud.com'
  22. elif region is not None:
  23. self._hostname = '{region}.file.myqcloud.com'.format(region=region)
  24. self._download_hostname = 'cos{region}.myqcloud.com'.format(region=region)
  25. else:
  26. if hostname and download_hostname:
  27. self._hostname = hostname
  28. self._download_hostname = download_hostname
  29. else:
  30. raise ValueError("region or [hostname, download_hostname] must be set, and region should be sh/gz/tj/sgp")
  31. @property
  32. def hostname(self):
  33. assert self._hostname is not None
  34. return self._hostname
  35. @property
  36. def download_hostname(self):
  37. assert self._download_hostname is not None
  38. return self._download_hostname
  39. class CosConfig(object):
  40. """CosConfig 有关cos的配置"""
  41. def __init__(self, timeout=300, sign_expired=300, enable_https=False, *args, **kwargs):
  42. self._region = CosRegionInfo(*args, **kwargs)
  43. self._user_agent = 'cos-python-sdk-v4'
  44. self._timeout = timeout
  45. self._sign_expired = sign_expired
  46. self._enable_https = enable_https
  47. if self._enable_https:
  48. self._protocol = "https"
  49. else:
  50. self._protocol = "http"
  51. def get_endpoint(self):
  52. """获取域名地址
  53. :return:
  54. """
  55. # tmpl = "%s://%s/files/v2"
  56. return self._protocol + "://" + self._region.hostname + "/files/v2"
  57. def get_download_hostname(self):
  58. return self._region.download_hostname
  59. def get_user_agent(self):
  60. """获取HTTP头中的user_agent
  61. :return:
  62. """
  63. return self._user_agent
  64. def set_timeout(self, time_out):
  65. """设置连接超时, 单位秒
  66. :param time_out:
  67. :return:
  68. """
  69. assert isinstance(time_out, int)
  70. self._timeout = time_out
  71. def get_timeout(self):
  72. """获取连接超时,单位秒
  73. :return:
  74. """
  75. return self._timeout
  76. def set_sign_expired(self, expired):
  77. """设置签名过期时间, 单位秒
  78. :param expired:
  79. :return:
  80. """
  81. assert isinstance(expired, int)
  82. self._sign_expired = expired
  83. def get_sign_expired(self):
  84. """获取签名过期时间, 单位秒
  85. :return:
  86. """
  87. return self._sign_expired
  88. @property
  89. def enable_https(self):
  90. assert self._enable_https is not None
  91. return self._enable_https
  92. @enable_https.setter
  93. def enable_https(self, val):
  94. if val != self._enable_https:
  95. if val:
  96. self._enable_https = val
  97. self._protocol = "https"
  98. else:
  99. self._enable_https = val
  100. self._protocol = "http"