------------------------------------------------------------
revno: 29
committer: Florian Fuchs <[email protected]>
branch nick: mailman.client
timestamp: Tue 2012-07-17 17:08:13 +0200
message:
  catch IOError (failing to connect to Mailman API) and raise custom Exception
modified:
  mailman/client/__init__.py
  mailman/client/_client.py


--
lp:mailman.client
https://code.launchpad.net/~mailman-coders/mailman.client/trunk

Your team Mailman Coders is subscribed to branch lp:mailman.client.
To unsubscribe from this branch go to 
https://code.launchpad.net/~mailman-coders/mailman.client/trunk/+edit-subscription
=== modified file 'mailman/client/__init__.py'
--- mailman/client/__init__.py	2012-03-23 23:24:28 +0000
+++ mailman/client/__init__.py	2012-07-17 15:08:13 +0000
@@ -21,6 +21,7 @@
 __metaclass__ = type
 __all__ = [
     'Client',
+    'MailmanConnectionError',
     '__version__',
     ]
 
@@ -28,4 +29,4 @@
 __version__ = '1.0.0a1'
 
 
-from mailman.client._client import Client
+from mailman.client._client import Client, MailmanConnectionError

=== modified file 'mailman/client/_client.py'
--- mailman/client/_client.py	2012-03-23 23:24:28 +0000
+++ mailman/client/_client.py	2012-07-17 15:08:13 +0000
@@ -21,6 +21,7 @@
 __metaclass__ = type
 __all__ = [
     'Client',
+    'MailmanConnectionError',
     ]
 
 
@@ -47,6 +48,11 @@
     return (member_dict['fqdn_listname'], member_dict['address'])
 
 
+class MailmanConnectionError(Exception):
+    """Custom Exception to catch connection errors."""
+    pass
+
+
 class _Connection:
     """A connection to the REST client."""
 
@@ -104,16 +110,19 @@
         if self.basic_auth:
             headers['Authorization'] = 'Basic ' + self.basic_auth
         url = urljoin(self.baseurl, path)
-        response, content = Http().request(url, method, data, headers)
-        # If we did not get a 2xx status code, make this look like a urllib2
-        # exception, for backward compatibility.
-        if response.status // 100 != 2:
-            raise HTTPError(url, response.status, content, response, None)
-        if len(content) == 0:
-            return response, None
-        # XXX Work around for http://bugs.python.org/issue10038
-        content = unicode(content)
-        return response, json.loads(content)
+        try:
+            response, content = Http().request(url, method, data, headers)
+            # If we did not get a 2xx status code, make this look like a urllib2
+            # exception, for backward compatibility.
+            if response.status // 100 != 2:
+                raise HTTPError(url, response.status, content, response, None)
+            if len(content) == 0:
+                return response, None
+            # XXX Work around for http://bugs.python.org/issue10038
+            content = unicode(content)
+            return response, json.loads(content)
+        except IOError:
+            raise MailmanConnectionError('Could not connect to Mailman API')
 
 
 class Client:

_______________________________________________
Mailman-coders mailing list
[email protected]
http://mail.python.org/mailman/listinfo/mailman-coders

Reply via email to