Package restkit :: Module errors
[hide private]
[frames] | no frames]

Source Code for Module restkit.errors

  1  # -*- coding: utf-8 - 
  2  # 
  3  # This file is part of restkit released under the MIT license.  
  4  # See the NOTICE for more information. 
  5   
  6  """ 
  7  exception classes. 
  8  """ 
  9               
10 -class ResourceError(Exception):
11 """ default error class """ 12 13 status_int = None 14
15 - def __init__(self, msg=None, http_code=None, response=None):
16 self.msg = msg or '' 17 self.status_int = http_code or self.status_int 18 self.response = response 19 Exception.__init__(self)
20
21 - def _get_message(self):
22 return self.msg
23 - def _set_message(self, msg):
24 self.msg = msg or ''
25 message = property(_get_message, _set_message) 26
27 - def __str__(self):
28 if self.msg: 29 return self.msg 30 try: 31 return str(self.__dict__) 32 except (NameError, ValueError, KeyError), e: 33 return 'Unprintable exception %s: %s' \ 34 % (self.__class__.__name__, str(e))
35 36
37 -class ResourceNotFound(ResourceError):
38 """Exception raised when no resource was found at the given url. 39 """ 40 status_int = 404
41
42 -class Unauthorized(ResourceError):
43 """Exception raised when an authorization is required to access to 44 the resource specified. 45 """
46
47 -class RequestFailed(ResourceError):
48 """Exception raised when an unexpected HTTP error is received in response 49 to a request. 50 51 52 The request failed, meaning the remote HTTP server returned a code 53 other than success, unauthorized, or NotFound. 54 55 The exception message attempts to extract the error 56 57 You can get the status code by e.http_code, or see anything about the 58 response via e.response. For example, the entire result body (which is 59 probably an HTML error page) is e.response.body. 60 """
61
62 -class RedirectLimit(Exception):
63 """Exception raised when the redirection limit is reached."""
64
65 -class RequestError(Exception):
66 """Exception raised when a request is malformed"""
67
68 -class RequestTimeout(Exception):
69 """ Exception raised on socket timeout """
70
71 -class InvalidUrl(Exception):
72 """ 73 Not a valid url for use with this software. 74 """
75
76 -class ResponseError(Exception):
77 """ Error raised while getting response or decompressing response stream"""
78 79
80 -class ProxyError(Exception):
81 """ raised when proxy error happend"""
82
83 -class BadStatusLine(Exception):
84 """ Exception returned by the parser when the status line is invalid""" 85 pass
86
87 -class ParserError(Exception):
88 """ Generic exception returned by the parser """ 89 pass
90
91 -class UnexpectedEOF(Exception):
92 """ exception raised when remote closed the connection """
93
94 -class AlreadyRead(Exception):
95 """ raised when a response have already been read """
96
97 -class ProxyError(Exception):
98 pass
99 100 ############################# 101 # HTTP parser errors 102 ############################# 103
104 -class ParseException(Exception):
105 pass
106
107 -class NoMoreData(ParseException):
108 - def __init__(self, buf=None):
109 self.buf = buf
110 - def __str__(self):
111 return "No more data after: %r" % self.buf
112
113 -class InvalidRequestLine(ParseException):
114 - def __init__(self, req):
115 self.req = req 116 self.code = 400
117
118 - def __str__(self):
119 return "Invalid HTTP request line: %r" % self.req
120
121 -class InvalidRequestMethod(ParseException):
122 - def __init__(self, method):
123 self.method = method
124
125 - def __str__(self):
126 return "Invalid HTTP method: %r" % self.method
127
128 -class InvalidHTTPVersion(ParseException):
129 - def __init__(self, version):
130 self.version = version
131
132 - def __str__(self):
133 return "Invalid HTTP Version: %s" % self.version
134
135 -class InvalidHTTPStatus(ParseException):
136 - def __init__(self, status):
137 self.status = status
138
139 - def __str__(self):
140 return "Invalid HTTP Status: %s" % self.status
141
142 -class InvalidHeader(ParseException):
143 - def __init__(self, hdr):
144 self.hdr = hdr
145
146 - def __str__(self):
147 return "Invalid HTTP Header: %r" % self.hdr
148
149 -class InvalidHeaderName(ParseException):
150 - def __init__(self, hdr):
151 self.hdr = hdr
152
153 - def __str__(self):
154 return "Invalid HTTP header name: %r" % self.hdr
155
156 -class InvalidChunkSize(ParseException):
157 - def __init__(self, data):
158 self.data = data
159
160 - def __str__(self):
161 return "Invalid chunk size: %r" % self.data
162
163 -class ChunkMissingTerminator(ParseException):
164 - def __init__(self, term):
165 self.term = term
166
167 - def __str__(self):
168 return "Invalid chunk terminator is not '\\r\\n': %r" % self.term
169