Files
hsa/.venv/lib/python3.10/site-packages/qcloud_cos/cos_exception.py
2025-09-11 13:29:12 +00:00

102 lines
2.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# -*- coding=utf-8
import xml.dom.minidom
class CosException(Exception):
def __init__(self, message):
self._message = message
def __str__(self):
return str(self._message)
def digest_xml(data):
msg = dict()
try:
tree = xml.dom.minidom.parseString(data)
root = tree.documentElement
result = root.getElementsByTagName('Code')
msg['code'] = result[0].childNodes[0].nodeValue
result = root.getElementsByTagName('Message')
msg['message'] = result[0].childNodes[0].nodeValue
result = root.getElementsByTagName('Resource')
msg['resource'] = result[0].childNodes[0].nodeValue
result = root.getElementsByTagName('RequestId')
msg['requestid'] = result[0].childNodes[0].nodeValue
result = root.getElementsByTagName('TraceId')
if result:
msg['traceid'] = result[0].childNodes[0].nodeValue
else:
msg['traceid'] = 'Unknown'
return msg
except Exception as e:
return "Response Error Msg Is INVALID"
class CosClientError(CosException):
"""Client端错误如timeout"""
def __init__(self, message):
CosException.__init__(self, message)
class CosServiceError(CosException):
"""COS Server端错误可以获取特定的错误信息"""
def __init__(self, method, message, status_code):
CosException.__init__(self, message)
if isinstance(message, dict):
self._origin_msg = ''
self._digest_msg = message
else:
self._origin_msg = message
self._digest_msg = digest_xml(message)
self._status_code = status_code
def __str__(self):
return str(self._digest_msg)
def get_origin_msg(self):
"""获取原始的XML格式错误信息"""
return self._origin_msg
def get_digest_msg(self):
"""获取经过处理的dict格式的错误信息"""
return self._digest_msg
def get_status_code(self):
"""获取http error code"""
return self._status_code
def get_error_code(self):
"""获取COS定义的错误码描述,服务器返回错误信息格式出错时,返回空 """
if isinstance(self._digest_msg, dict):
return self._digest_msg['code']
return "Unknown"
def get_error_msg(self):
if isinstance(self._digest_msg, dict):
return self._digest_msg['message']
return "Unknown"
def get_resource_location(self):
if isinstance(self._digest_msg, dict):
return self._digest_msg['resource']
return "Unknown"
def get_trace_id(self):
if isinstance(self._digest_msg, dict):
return self._digest_msg['traceid']
return "Unknown"
def get_request_id(self):
if isinstance(self._digest_msg, dict):
return self._digest_msg['requestid']
return "Unknown"