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 98 99 ############################# 100 # HTTP parser errors 101 ############################# 102
103 -class ParseException(Exception):
104 pass
105
106 -class NoMoreData(ParseException):
107 - def __init__(self, buf=None):
108 self.buf = buf
109 - def __str__(self):
110 return "No more data after: %r" % self.buf
111
112 -class InvalidRequestLine(ParseException):
113 - def __init__(self, req):
114 self.req = req 115 self.code = 400
116
117 - def __str__(self):
118 return "Invalid HTTP request line: %r" % self.req
119
120 -class InvalidRequestMethod(ParseException):
121 - def __init__(self, method):
122 self.method = method
123
124 - def __str__(self):
125 return "Invalid HTTP method: %r" % self.method
126
127 -class InvalidHTTPVersion(ParseException):
128 - def __init__(self, version):
129 self.version = version
130
131 - def __str__(self):
132 return "Invalid HTTP Version: %s" % self.version
133
134 -class InvalidHTTPStatus(ParseException):
135 - def __init__(self, status):
136 self.status = status
137
138 - def __str__(self):
139 return "Invalid HTTP Status: %s" % self.status
140
141 -class InvalidHeader(ParseException):
142 - def __init__(self, hdr):
143 self.hdr = hdr
144
145 - def __str__(self):
146 return "Invalid HTTP Header: %r" % self.hdr
147
148 -class InvalidHeaderName(ParseException):
149 - def __init__(self, hdr):
150 self.hdr = hdr
151
152 - def __str__(self):
153 return "Invalid HTTP header name: %r" % self.hdr
154
155 -class InvalidChunkSize(ParseException):
156 - def __init__(self, data):
157 self.data = data
158
159 - def __str__(self):
160 return "Invalid chunk size: %r" % self.data
161
162 -class ChunkMissingTerminator(ParseException):
163 - def __init__(self, term):
164 self.term = term
165
166 - def __str__(self):
167 return "Invalid chunk terminator is not '\\r\\n': %r" % self.term
168