diff options
author | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
---|---|---|
committer | S. Solomon Darnell | 2025-03-28 21:52:21 -0500 |
commit | 4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch) | |
tree | ee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/python_http_client/exceptions.py | |
parent | cc961e04ba734dd72309fb548a2f97d67d578813 (diff) | |
download | gn-ai-4a52a71956a8d46fcb7294ac71734504bb09bcc2.tar.gz |
Diffstat (limited to '.venv/lib/python3.12/site-packages/python_http_client/exceptions.py')
-rw-r--r-- | .venv/lib/python3.12/site-packages/python_http_client/exceptions.py | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/python_http_client/exceptions.py b/.venv/lib/python3.12/site-packages/python_http_client/exceptions.py new file mode 100644 index 00000000..2a8c179b --- /dev/null +++ b/.venv/lib/python3.12/site-packages/python_http_client/exceptions.py @@ -0,0 +1,97 @@ +import json + + +class HTTPError(Exception): + """ Base of all other errors""" + + def __init__(self, *args): + if len(args) == 4: + self.status_code = args[0] + self.reason = args[1] + self.body = args[2] + self.headers = args[3] + else: + self.status_code = args[0].code + self.reason = args[0].reason + self.body = args[0].read() + self.headers = args[0].hdrs + + def __reduce__(self): + return ( + HTTPError, + (self.status_code, self.reason, self.body, self.headers) + ) + + @property + def to_dict(self): + """ + :return: dict of response error from the API + """ + return json.loads(self.body.decode('utf-8')) + + +class BadRequestsError(HTTPError): + pass + + +class UnauthorizedError(HTTPError): + pass + + +class ForbiddenError(HTTPError): + pass + + +class NotFoundError(HTTPError): + pass + + +class MethodNotAllowedError(HTTPError): + pass + + +class PayloadTooLargeError(HTTPError): + pass + + +class UnsupportedMediaTypeError(HTTPError): + pass + + +class TooManyRequestsError(HTTPError): + pass + + +class InternalServerError(HTTPError): + pass + + +class ServiceUnavailableError(HTTPError): + pass + + +class GatewayTimeoutError(HTTPError): + pass + + +err_dict = { + 400: BadRequestsError, + 401: UnauthorizedError, + 403: ForbiddenError, + 404: NotFoundError, + 405: MethodNotAllowedError, + 413: PayloadTooLargeError, + 415: UnsupportedMediaTypeError, + 429: TooManyRequestsError, + 500: InternalServerError, + 503: ServiceUnavailableError, + 504: GatewayTimeoutError +} + + +def handle_error(error): + try: + exc = err_dict[error.code](error) + except KeyError: + return HTTPError(error) + return exc |