Files
CN2021/httplib/exceptions.py

110 lines
2.5 KiB
Python

class HTTPException(Exception):
""" Base class for HTTP exceptions """
class InvalidResponse(HTTPException):
""" Response message cannot be parsed """
def __init(self, message):
self.message = message
class InvalidStatusLine(HTTPException):
""" Response status line is invalid """
def __init(self, line):
self.line = line
class UnsupportedEncoding(HTTPException):
""" Encoding not supported """
def __init(self, enc_type, encoding):
self.enc_type = enc_type
self.encoding = encoding
class IncompleteResponse(HTTPException):
def __init(self, cause):
self.cause = cause
class HTTPServerException(Exception):
""" Base class for HTTP Server exceptions """
status_code: str
message: str
body: str
arg: str
def __init__(self, arg, body=""):
self.arg = arg
self.body = body
class HTTPServerCloseException(HTTPServerException):
""" When thrown, the connection should be closed """
class BadRequest(HTTPServerCloseException):
""" Malformed HTTP request"""
status_code = 400
message = "Bad Request"
class Forbidden(HTTPServerException):
""" Request not allowed """
status_code = 403
message = "Forbidden"
class NotFound(HTTPServerException):
""" Resource not found """
status_code = 404
message = "Not Found"
class MethodNotAllowed(HTTPServerException):
""" Method is not allowed """
status_code = 405
message = "Method Not Allowed"
def __init(self, allowed_methods):
self.allowed_methods = allowed_methods
class InternalServerError(HTTPServerCloseException):
""" Internal Server Error """
status_code = 500
message = "Internal Server Error"
class NotImplemented(HTTPServerException):
""" Functionality not implemented """
status_code = 501
message = "Not Implemented"
class HTTPVersionNotSupported(HTTPServerCloseException):
""" The server does not support the major version HTTP used in the request message """
status_code = 505
message = "HTTP Version Not Supported"
class Conflict(HTTPServerException):
""" Conflict in the current state of the target resource """
status_code = 409
message = "Conflict"
class NotModified(HTTPServerException):
""" Requested resource was not modified """
status_code = 304
message = "Not Modified"
class InvalidRequestLine(BadRequest):
""" Request start-line is invalid """
def __init__(self, line):
self.request_line = line