New status_code-based errors
authorKenneth Reitz <me@kennethreitz.com>
Sun, 23 Oct 2011 20:36:53 +0000 (16:36 -0400)
committerKenneth Reitz <me@kennethreitz.com>
Sun, 23 Oct 2011 20:36:53 +0000 (16:36 -0400)
requests/models.py

index 1fac1a8..a77e871 100644 (file)
@@ -22,7 +22,7 @@ from .packages.poster.encode import multipart_encode
 from .packages.poster.streaminghttp import register_openers, get_handlers
 from .utils import (dict_from_cookiejar, get_unicode_from_response, stream_decode_response_unicode, decode_gzip, stream_decode_gzip)
 from .status_codes import codes
-from .exceptions import Timeout, URLRequired, TooManyRedirects
+from .exceptions import Timeout, URLRequired, TooManyRedirects, RequestException
 from .monkeys import Request as _Request
 from .monkeys import HTTPRedirectHandler
 
@@ -514,6 +514,17 @@ class Response(object):
 
     def raise_for_status(self):
         """Raises stored :class:`HTTPError` or :class:`URLError`, if one occurred."""
+
         if self.error:
             raise self.error
 
+        if (self.status_code >= 300) and (self.status_code < 400):
+            raise RequestException('%s Redirection' % self.status_code)
+
+        elif (self.status_code >= 400) and (self.status_code < 500):
+            raise RequestException('%s Client Error' % self.status_code)
+
+        elif (self.status_code >= 500) and (self.status_code < 600):
+            raise RequestException('%s Server Error' % self.status_code)
+
+