Browse code

* S3/S3.py: Modify S3Error exception to work in python 2.4 (=> don't expect Exception is a new-style class). * s3cmd: Updated for the above change.

git-svn-id: https://s3tools.svn.sourceforge.net/svnroot/s3tools/s3cmd/trunk@93 830e0280-6d2a-0410-9c65-932aecc39d9d

Michal Ludvig authored on 2007/02/28 11:38:27
Showing 2 changed files
... ...
@@ -23,6 +23,7 @@ class S3Error (Exception):
23 23
 	def __init__(self, response):
24 24
 		self.status = response["status"]
25 25
 		self.reason = response["reason"]
26
+		self.info = {}
26 27
 		debug("S3Error: %s (%s)" % (self.status, self.reason))
27 28
 		if response.has_key("headers"):
28 29
 			for header in response["headers"]:
... ...
@@ -32,12 +33,12 @@ class S3Error (Exception):
32 32
 			for child in tree.getchildren():
33 33
 				if child.text != "":
34 34
 					debug("ErrorXML: " + child.tag + ": " + repr(child.text))
35
-					self.__setattr__(child.tag, child.text)
35
+					self.info[child.tag] = child.text
36 36
 
37 37
 	def __str__(self):
38 38
 		retval = "%d (%s)" % (self.status, self.reason)
39 39
 		try:
40
-			retval += (": %s" % self.Code)
40
+			retval += (": %s" % self.info["Code"])
41 41
 		except AttributeError:
42 42
 			pass
43 43
 		return retval
... ...
@@ -59,8 +59,8 @@ def subcmd_bucket_list(s3, uri):
59 59
 	try:
60 60
 		response = s3.bucket_list(bucket, prefix = object)
61 61
 	except S3Error, e:
62
-		if S3.codes.has_key(e.Code):
63
-			error(S3.codes[e.Code] % bucket)
62
+		if S3.codes.has_key(e.info["Code"]):
63
+			error(S3.codes[e.info["Code"]] % bucket)
64 64
 			return
65 65
 		else:
66 66
 			raise
... ...
@@ -81,8 +81,8 @@ def cmd_bucket_create(args):
81 81
 		s3 = S3(Config())
82 82
 		response = s3.bucket_create(uri.bucket())
83 83
 	except S3Error, e:
84
-		if S3.codes.has_key(e.Code):
85
-			error(S3.codes[e.Code] % uri.bucket())
84
+		if S3.codes.has_key(e.info["Code"]):
85
+			error(S3.codes[e.info["Code"]] % uri.bucket())
86 86
 			return
87 87
 		else:
88 88
 			raise
... ...
@@ -96,8 +96,8 @@ def cmd_bucket_delete(args):
96 96
 		s3 = S3(Config())
97 97
 		response = s3.bucket_delete(uri.bucket())
98 98
 	except S3Error, e:
99
-		if S3.codes.has_key(e.Code):
100
-			error(S3.codes[e.Code] % uri.bucket())
99
+		if S3.codes.has_key(e.info["Code"]):
100
+			error(S3.codes[e.info["Code"]] % uri.bucket())
101 101
 			return
102 102
 		else:
103 103
 			raise