diff options
author | Bryan Newbold <bnewbold@robocracy.org> | 2019-09-18 23:37:17 -0700 |
---|---|---|
committer | Bryan Newbold <bnewbold@robocracy.org> | 2019-09-18 23:38:27 -0700 |
commit | 02daeaf2652383985bc4d31170d8180f58ce1b18 (patch) | |
tree | 722c3ce7b193bc125d0c6bf2748abe5982fbbde8 /python_openapi_client/fatcat_openapi_client/exceptions.py | |
parent | bf9ec36fd482940a5bbe63cb13d2d6518b93a27d (diff) | |
download | fatcat-02daeaf2652383985bc4d31170d8180f58ce1b18.tar.gz fatcat-02daeaf2652383985bc4d31170d8180f58ce1b18.zip |
python codegen with new openapi-generator tool
Diffstat (limited to 'python_openapi_client/fatcat_openapi_client/exceptions.py')
-rw-r--r-- | python_openapi_client/fatcat_openapi_client/exceptions.py | 121 |
1 files changed, 121 insertions, 0 deletions
diff --git a/python_openapi_client/fatcat_openapi_client/exceptions.py b/python_openapi_client/fatcat_openapi_client/exceptions.py new file mode 100644 index 00000000..8d26659c --- /dev/null +++ b/python_openapi_client/fatcat_openapi_client/exceptions.py @@ -0,0 +1,121 @@ +# coding: utf-8 + +""" + fatcat + + Fatcat is a scalable, versioned, API-oriented catalog of bibliographic entities and file metadata. # noqa: E501 + + The version of the OpenAPI document: 0.3.1 + Contact: webservices@archive.org + Generated by: https://openapi-generator.tech +""" + + +import six + + +class OpenApiException(Exception): + """The base exception class for all OpenAPIExceptions""" + + +class ApiTypeError(OpenApiException, TypeError): + def __init__(self, msg, path_to_item=None, valid_classes=None, + key_type=None): + """ Raises an exception for TypeErrors + + Args: + msg (str): the exception message + + Keyword Args: + path_to_item (list): a list of keys an indices to get to the + current_item + None if unset + valid_classes (tuple): the primitive classes that current item + should be an instance of + None if unset + key_type (bool): False if our value is a value in a dict + True if it is a key in a dict + False if our item is an item in a list + None if unset + """ + self.path_to_item = path_to_item + self.valid_classes = valid_classes + self.key_type = key_type + full_msg = msg + if path_to_item: + full_msg = "{0} at {1}".format(msg, render_path(path_to_item)) + super(ApiTypeError, self).__init__(full_msg) + + +class ApiValueError(OpenApiException, ValueError): + def __init__(self, msg, path_to_item=None): + """ + Args: + msg (str): the exception message + + Keyword Args: + path_to_item (list) the path to the exception in the + received_data dict. None if unset + """ + + self.path_to_item = path_to_item + full_msg = msg + if path_to_item: + full_msg = "{0} at {1}".format(msg, render_path(path_to_item)) + super(ApiValueError, self).__init__(full_msg) + + +class ApiKeyError(OpenApiException, KeyError): + def __init__(self, msg, path_to_item=None): + """ + Args: + msg (str): the exception message + + Keyword Args: + path_to_item (None/list) the path to the exception in the + received_data dict + """ + self.path_to_item = path_to_item + full_msg = msg + if path_to_item: + full_msg = "{0} at {1}".format(msg, render_path(path_to_item)) + super(ApiKeyError, self).__init__(full_msg) + + +class ApiException(OpenApiException): + + def __init__(self, status=None, reason=None, http_resp=None): + if http_resp: + self.status = http_resp.status + self.reason = http_resp.reason + self.body = http_resp.data + self.headers = http_resp.getheaders() + else: + self.status = status + self.reason = reason + self.body = None + self.headers = None + + def __str__(self): + """Custom error messages for exception""" + error_message = "({0})\n"\ + "Reason: {1}\n".format(self.status, self.reason) + if self.headers: + error_message += "HTTP response headers: {0}\n".format( + self.headers) + + if self.body: + error_message += "HTTP response body: {0}\n".format(self.body) + + return error_message + + +def render_path(path_to_item): + """Returns a string representation of a path""" + result = "" + for pth in path_to_item: + if isinstance(pth, six.integer_types): + result += "[{0}]".format(pth) + else: + result += "['{0}']".format(pth) + return result |