# Path: pycnic/data.py
# STATUSES = {
#         200: "200 OK",
#         201: "201 Created",
#         202: "202 Accepted",
#         204: "204 No Content",
#         206: "206 Partial Content",
#         207: "207 Multi-Status",
#         208: "208 Already Reported",
#         226: "226 IM Used",
#         300: "300 Multiple Choices",
#         301: "301 Moved Permanently",
#         302: "302 Found",
#         303: "303 See Other",
#         304: "304 Not Modified",
#         305: "305 Use Proxy",
#         307: "307 Temporary Redirect",
#         308: "308 Permanent Redirect",
#         400: "400 Bad Request",
#         401: "401 Unauthorized",
#         402: "402 Payment Required",
#         403: "403 Forbidden",
#         404: "404 Not Found",
#         405: "405 Method Not Allowed",
#         406: "406 Not Acceptable",
#         407: "407 Proxy Authentication Required",
#         408: "408 Request Timeout",
#         409: "409 Conflict",
#         410: "410 Gone",
#         411: "411 Length Required",
#         412: "412 Precondition Failed",
#         413: "413 Payload Too Large",
#         414: "414 URI Too Long",
#         415: "415 Unsupported Media Type",
#         416: "416 Range Not Satisfiable",
#         417: "417 Expectation Failed",
#         421: "421 Misdirected Request",
#         422: "422 Unprocessable Entity",
#         423: "423 Locked",
#         424: "424 Failed Dependency",
#         425: "425 Too Early",
#         426: "426 Upgrade Required",
#         428: "428 Precondition Required",
#         429: "429 Too Many Requests",
#         431: "431 Request Header Fields Too Large",
#         451: "451 Unavailable For Legal Reasons",
#         500: "500 Internal Server Error",
#         501: "501 Not Implemented",
#         502: "502 Bad Gateway",
#         503: "503 Service Unavailable",
#         504: "504 Gateway Timeout",
#         505: "505 HTTP Version Not Supported",
#         506: "506 Variant Also Negotiates",
#         507: "507 Insufficient Storage",
#         508: "508 Loop Detected",
#         510: "510 Not Extended",
#         577: "577 Unknown Status",
# }


from .data import STATUSES
    status = None
    message = None
    data = None
    headers = None

    def __init__(self, status_code, message, data=None, headers=[]):
        if self.status_code:
            status_code = self.status_code
        self.status_code = status_code
        self.status = STATUSES[status_code]
        self.message = message
        self.data = data
        if headers:
            self.headers = headers

    def response(self):
        return {
            "status": self.status,
            "status_code": self.status_code,
            "error": self.message,
            "data": self.data
        }


class HTTPNumeric(HTTPError):

    status_code = 0

    def __init__(self, message, data=None, headers=[]):
        super(HTTPError, self).__init__(self.status_code, message, data, headers)

# Path: pycnic/data.py
# STATUSES = {
#         200: "200 OK",
#         201: "201 Created",
#         202: "202 Accepted",
#         204: "204 No Content",
#         206: "206 Partial Content",
#         207: "207 Multi-Status",
#         208: "208 Already Reported",
#         226: "226 IM Used",
#         300: "300 Multiple Choices",
#         301: "301 Moved Permanently",
#         302: "302 Found",
#         303: "303 See Other",
#         304: "304 Not Modified",
#         305: "305 Use Proxy",
#         307: "307 Temporary Redirect",
#         308: "308 Permanent Redirect",
#         400: "400 Bad Request",
#         401: "401 Unauthorized",
#         402: "402 Payment Required",
#         403: "403 Forbidden",
#         404: "404 Not Found",
#         405: "405 Method Not Allowed",
#         406: "406 Not Acceptable",
#         407: "407 Proxy Authentication Required",
#         408: "408 Request Timeout",
#         409: "409 Conflict",
#         410: "410 Gone",
#         411: "411 Length Required",
#         412: "412 Precondition Failed",
#         413: "413 Payload Too Large",
#         414: "414 URI Too Long",
#         415: "415 Unsupported Media Type",
#         416: "416 Range Not Satisfiable",
#         417: "417 Expectation Failed",
#         421: "421 Misdirected Request",
#         422: "422 Unprocessable Entity",
#         423: "423 Locked",
#         424: "424 Failed Dependency",
#         425: "425 Too Early",
#         426: "426 Upgrade Required",
#         428: "428 Precondition Required",
#         429: "429 Too Many Requests",
#         431: "431 Request Header Fields Too Large",
#         451: "451 Unavailable For Legal Reasons",
#         500: "500 Internal Server Error",
#         501: "501 Not Implemented",
#         502: "502 Bad Gateway",
#         503: "503 Service Unavailable",
#         504: "504 Gateway Timeout",
#         505: "505 HTTP Version Not Supported",
#         506: "506 Variant Also Negotiates",
#         507: "507 Insufficient Storage",
#         508: "508 Loop Detected",
#         510: "510 Not Extended",
#         577: "577 Unknown Status",
# }


# Path: pycnic/errors.py
from .data import STATUSES

    status = None
    message = None
    data = None
    headers = None

    def __init__(self, status_code, message, data=None, headers=[]):
        if self.status_code:
            status_code = self.status_code
        self.status_code = status_code
        self.status = STATUSES[status_code]
        self.message = message
        self.data = data
        if headers:
            self.headers = headers

    def response(self):
        return {
            "status": self.status,
            "status_code": self.status_code,
            "error": self.message,
            "data": self.data
        }


class HTTPNumeric(HTTPError):

    status_code = 0

    def __init__(self, message, data=None, headers=[]):
        super(HTTPError, self).__init__(self.status_code, message, data, headers)

        self.status = STATUSES[self.status_code]