about summary refs log tree commit diff
path: root/.venv/lib/python3.12/site-packages/python_http_client/exceptions.py
diff options
context:
space:
mode:
authorS. Solomon Darnell2025-03-28 21:52:21 -0500
committerS. Solomon Darnell2025-03-28 21:52:21 -0500
commit4a52a71956a8d46fcb7294ac71734504bb09bcc2 (patch)
treeee3dc5af3b6313e921cd920906356f5d4febc4ed /.venv/lib/python3.12/site-packages/python_http_client/exceptions.py
parentcc961e04ba734dd72309fb548a2f97d67d578813 (diff)
downloadgn-ai-master.tar.gz
two version of R2R are here HEAD master
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.py97
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