MCPcopy Create free account
hub / github.com/s3tools/s3cmd / S3Error

Class S3Error

S3/Exceptions.py:72–141  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

70
71
72class S3Error(S3Exception):
73 def __init__(self, response):
74 self.status = response["status"]
75 self.reason = response["reason"]
76 self.info = {
77 "Code": "",
78 "Message": "",
79 "Resource": ""
80 }
81 debug("S3Error: %s (%s)" % (self.status, self.reason))
82 if "headers" in response:
83 for header in response["headers"]:
84 debug("HttpHeader: %s: %s" % (header, response["headers"][header]))
85 if "data" in response and response["data"]:
86 try:
87 tree = S3.BaseUtils.getTreeFromXml(response["data"])
88 except XmlParseError:
89 debug("Not an XML response")
90 else:
91 try:
92 self.info.update(self.parse_error_xml(tree))
93 except Exception as e:
94 error("Error parsing xml: %s. ErrorXML: %s" % (e, response["data"]))
95
96 self.code = self.info["Code"]
97 self.message = self.info["Message"]
98 self.resource = self.info["Resource"]
99
100 def __unicode__(self):
101 retval = u"%d " % (self.status)
102 retval += (u"(%s)" % (self.code or self.reason))
103 error_msg = self.message
104 if error_msg:
105 retval += (u": %s" % error_msg)
106 return retval
107
108 def get_error_code(self):
109 if self.status in [301, 307]:
110 return ExitCodes.EX_SERVERMOVED
111 elif self.status in [400, 405, 411, 416, 417, 501, 504]:
112 return ExitCodes.EX_SERVERERROR
113 elif self.status == 403:
114 return ExitCodes.EX_ACCESSDENIED
115 elif self.status == 404:
116 return ExitCodes.EX_NOTFOUND
117 elif self.status == 409:
118 return ExitCodes.EX_CONFLICT
119 elif self.status == 412:
120 return ExitCodes.EX_PRECONDITION
121 elif self.status == 500:
122 return ExitCodes.EX_SOFTWARE
123 elif self.status in [429, 503]:
124 return ExitCodes.EX_SERVICE
125 else:
126 return ExitCodes.EX_SOFTWARE
127
128 @staticmethod
129 def parse_error_xml(tree):

Callers 6

object_copyMethod · 0.85
_http_403_handlerMethod · 0.85
send_requestMethod · 0.85
send_fileMethod · 0.85
recv_fileMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…