More precise exception for HTTP errors in `statetip' Python module.
authorStanislaw Klekot <dozzie@jarowit.net>
Mon, 2 Jan 2017 22:11:33 +0000 (23:11 +0100)
committerStanislaw Klekot <dozzie@jarowit.net>
Mon, 2 Jan 2017 22:11:33 +0000 (23:11 +0100)
pylib/statetip/__init__.py

index 322cefb..c438807 100644 (file)
@@ -13,6 +13,8 @@
 
 .. autoexception:: NetworkError
 
+.. autoexception:: HTTPError
+
 .. autoexception:: Timeout
 
 '''
@@ -45,6 +47,22 @@ class NetworkError(StateTipException):
     '''
     pass
 
+class HTTPError(NetworkError):
+    '''
+    HTTP error exception, a subclass of :exc:`NetworkError`.
+    '''
+    def __init__(self, code, reason):
+        '''
+        :param code: HTTP status code
+        :param reason: message returned in status line
+
+        Both parameters are available as exception's fields (``e.code`` and
+        ``e.reason``, respectively).
+        '''
+        super(HTTPError, self).__init__("HTTP error: [%s] %s" % (code, reason))
+        self.code = code
+        self.reason = reason
+
 class Timeout(StateTipException):
     '''
     Request timeout exception.
@@ -171,7 +189,7 @@ class StateTipReader:
         try:
             reply_handle = urllib2.urlopen(request, timeout = self.timeout)
         except urllib2.HTTPError, e:
-            raise NetworkError("HTTP error: [%s] %s" % (e.code, e.reason))
+            raise HTTPError(e.code, e.reason)
         except urllib2.URLError, e:
             raise NetworkError("connection error: %s" % (e.reason))
         except socket.timeout, e: