cos_client.py 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. import requests
  4. from cos_cred import CredInfo
  5. from cos_config import CosConfig
  6. from cos_op import FileOp
  7. from cos_op import FolderOp
  8. from cos_request import UploadFileRequest
  9. from cos_request import UploadSliceFileRequest
  10. from cos_request import UpdateFileRequest
  11. from cos_request import UpdateFolderRequest
  12. from cos_request import DelFileRequest
  13. from cos_request import DelFolderRequest
  14. from cos_request import CreateFolderRequest
  15. from cos_request import StatFolderRequest
  16. from cos_request import StatFileRequest
  17. from cos_request import ListFolderRequest
  18. from cos_request import DownloadFileRequest
  19. try:
  20. from requests.packages.urllib3.exceptions import InsecureRequestWarning
  21. requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
  22. except ImportError:
  23. pass
  24. class CosClient(object):
  25. """Cos客户端类"""
  26. def __init__(self, appid, secret_id, secret_key, region="shanghai"):
  27. """ 设置用户的相关信息
  28. :param appid: appid
  29. :param secret_id: secret_id
  30. :param secret_key: secret_key
  31. """
  32. self._cred = CredInfo(appid, secret_id, secret_key)
  33. self._config = CosConfig(region=region)
  34. self._http_session = requests.session()
  35. self._file_op = FileOp(self._cred, self._config, self._http_session)
  36. self._folder_op = FolderOp(self._cred, self._config, self._http_session)
  37. def set_config(self, config):
  38. """设置config"""
  39. assert isinstance(config, CosConfig)
  40. self._config = config
  41. self._file_op.set_config(config)
  42. self._folder_op.set_config(config)
  43. def get_config(self):
  44. """获取config"""
  45. return self._config
  46. def set_cred(self, cred):
  47. """设置用户的身份信息
  48. :param cred:
  49. :return:
  50. """
  51. assert isinstance(cred, CredInfo)
  52. self._cred = cred
  53. self._file_op.set_cred(cred)
  54. self._folder_op.set_cred(cred)
  55. def get_cred(self):
  56. """获取用户的相关信息
  57. :return:
  58. """
  59. return self._cred
  60. def upload_file(self, request):
  61. """ 上传文件(自动根据文件大小,选择上传策略, 强烈推荐使用),上传策略: 8MB以下适用单文件上传, 8MB(含)适用分片上传
  62. :param request:
  63. :return:
  64. """
  65. assert isinstance(request, UploadFileRequest)
  66. return self._file_op.upload_file(request)
  67. def upload_single_file(self, request):
  68. """单文件上传接口, 适用用小文件8MB以下, 最大不得超过20MB, 否则会返回参数错误
  69. :param request:
  70. :return:
  71. """
  72. assert isinstance(request, UploadFileRequest)
  73. return self._file_op.upload_single_file(request)
  74. def upload_slice_file(self, request):
  75. """ 分片上传接口, 适用于大文件8MB及以上
  76. :param request:
  77. :return:
  78. """
  79. assert isinstance(request, UploadSliceFileRequest)
  80. return self._file_op.upload_slice_file(request)
  81. def del_file(self, request):
  82. """ 删除文件
  83. :param request:
  84. :return:
  85. """
  86. assert isinstance(request, DelFileRequest)
  87. return self._file_op.del_file(request)
  88. def move_file(self, request):
  89. return self._file_op.move_file(request)
  90. def stat_file(self, request):
  91. """获取文件属性
  92. :param request:
  93. :return:
  94. """
  95. assert isinstance(request, StatFileRequest)
  96. return self._file_op.stat_file(request)
  97. def update_file(self, request):
  98. """更新文件属性
  99. :param request:
  100. :return:
  101. """
  102. assert isinstance(request, UpdateFileRequest)
  103. return self._file_op.update_file(request)
  104. def download_file(self, request):
  105. assert isinstance(request, DownloadFileRequest)
  106. return self._file_op.download_file(request)
  107. def create_folder(self, request):
  108. """创建目录
  109. :param request:
  110. :return:
  111. """
  112. assert isinstance(request, CreateFolderRequest)
  113. return self._folder_op.create_folder(request)
  114. def del_folder(self, request):
  115. """删除目录
  116. :param request:
  117. :return:
  118. """
  119. assert isinstance(request, DelFolderRequest)
  120. return self._folder_op.del_folder(request)
  121. def stat_folder(self, request):
  122. """获取folder属性请求
  123. :param request:
  124. :return:
  125. """
  126. assert isinstance(request, StatFolderRequest)
  127. return self._folder_op.stat_folder(request)
  128. def update_folder(self, request):
  129. """更新目录属性
  130. :param request:
  131. :return:
  132. """
  133. assert isinstance(request, UpdateFolderRequest)
  134. return self._folder_op.update_folder(request)
  135. def list_folder(self, request):
  136. """获取目录下的文件和目录列表
  137. :param request:
  138. :return:
  139. """
  140. assert isinstance(request, ListFolderRequest)
  141. return self._folder_op.list_folder(request)