104 lines
2.0 KiB
Python
104 lines
2.0 KiB
Python
|
|
class ConnectionError(Exception):
|
|
def __init__(self, response, content=None, message=None):
|
|
self.response = response
|
|
self.content = content
|
|
self.message = message
|
|
|
|
def __str__(self):
|
|
message = "Failed."
|
|
if hasattr(self.response, 'status_code'):
|
|
message += " Response status: %s." % (self.response.status_code)
|
|
if hasattr(self.response, 'reason'):
|
|
message += " Response message: %s." % (self.response.reason)
|
|
if hasattr(self.response, 'request'):
|
|
message += " Request URL: %s." % self.response.request.url
|
|
if self.content is not None:
|
|
message += " Error message: " + str(self.content)
|
|
return message
|
|
|
|
|
|
class Redirection(ConnectionError):
|
|
"""3xx Redirection
|
|
"""
|
|
def __str__(self):
|
|
message = super(Redirection, self).__str__()
|
|
if self.response.get('Location'):
|
|
message = "%s => %s" % (message, self.response.get('Location'))
|
|
return message
|
|
|
|
|
|
class MissingParam(TypeError):
|
|
pass
|
|
|
|
|
|
class MissingConfig(Exception):
|
|
pass
|
|
|
|
|
|
class ClientError(ConnectionError):
|
|
"""4xx Client Error
|
|
"""
|
|
pass
|
|
|
|
|
|
class BadRequest(ClientError):
|
|
"""400 Bad Request
|
|
"""
|
|
pass
|
|
|
|
|
|
class UnauthorizedAccess(ClientError):
|
|
"""401 Unauthorized
|
|
"""
|
|
pass
|
|
|
|
|
|
class ForbiddenAccess(ClientError):
|
|
"""403 Forbidden
|
|
"""
|
|
pass
|
|
|
|
|
|
class ResourceNotFound(ClientError):
|
|
"""404 Not Found
|
|
"""
|
|
pass
|
|
|
|
|
|
class ResourceConflict(ClientError):
|
|
"""409 Conflict
|
|
"""
|
|
pass
|
|
|
|
|
|
class ResourceGone(ClientError):
|
|
"""410 Gone
|
|
"""
|
|
pass
|
|
|
|
|
|
class PreconditionFailed(ClientError):
|
|
"""412 Precondition Failed"""
|
|
pass
|
|
|
|
|
|
class ResourceInvalid(ClientError):
|
|
"""422 Invalid
|
|
"""
|
|
pass
|
|
|
|
|
|
class ServerError(ConnectionError):
|
|
"""5xx Server Error
|
|
"""
|
|
pass
|
|
|
|
|
|
class MethodNotAllowed(ClientError):
|
|
"""405 Method Not Allowed
|
|
"""
|
|
|
|
def allowed_methods(self):
|
|
return self.response['Allow']
|