Skip to content

Commit d63cf5e

Browse files
author
libertyzhu
committed
优化异常解析逻辑
1 parent a2d31d5 commit d63cf5e

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

qcloud_cos/cos_exception.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# -*- coding=utf-8
22

33
import xml.dom.minidom
4+
from requests.structures import CaseInsensitiveDict
45

56

67
class CosException(Exception):
@@ -51,7 +52,7 @@ class CosServiceError(CosException):
5152

5253
def __init__(self, method, message, status_code):
5354
CosException.__init__(self, message)
54-
if isinstance(message, dict):
55+
if isinstance(message, dict) or isinstance(message, CaseInsensitiveDict):
5556
self._origin_msg = ''
5657
self._digest_msg = message
5758
else:

ut/test.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ def token(self):
7878
SecretKey=SECRET_KEY,
7979
)
8080

81+
anonymous_conf = CosConfig(Appid=APPID, Region=REGION, Anonymous=True)
82+
anonymous_client = CosS3Client(anonymous_conf)
83+
8184
client = CosS3Client(conf, retry=3)
8285
meta_insight_client = MetaInsightClient(metaConf, retry=3)
8386
ai_recognition_client = AIRecognitionClient(conf, retry=3)
@@ -6606,6 +6609,21 @@ def test_cos_client_retry_2():
66066609
do_retry_test(client2, err_retry_bucket, 'shutdown', 1, False)
66076610

66086611

6612+
def test_head_exception():
6613+
"""正确解析head请求响应的非404错误码"""
6614+
try:
6615+
anonymous_client.head_bucket(Bucket=test_bucket)
6616+
except CosServiceError as e:
6617+
assert 'x-cos-request-id' in e.get_digest_msg()
6618+
assert 403 == e.get_status_code()
6619+
6620+
try:
6621+
anonymous_client.head_object(Bucket=test_bucket, Key='foobar')
6622+
except CosServiceError as e:
6623+
assert 'x-cos-request-id' in e.get_digest_msg()
6624+
assert 403 == e.get_status_code()
6625+
6626+
66096627
if __name__ == "__main__":
66106628
setUp()
66116629
"""

0 commit comments

Comments
 (0)