Source code for nordigen_cli.apiclient.errors

from apiclient import exceptions
from apiclient.error_handlers import BaseErrorHandler, ErrorHandler
from apiclient.response import Response


[docs] class NordigenClientError(exceptions.ClientError): """Client error which has fields for ErrorResponse objects Args: response (Response): Response object message (str): Error message status_code (int): HTTP status code info (dict): Raw data from response Note: doesn't seem to pass type though in any response Example: This is an example of the error response from the Nordigen API:: { "summary": "Authentication failed", "detail": "No active account found with the given credentials", "status_code": 401 "type": null } """ response: Response # self.message = self.message or message # self.status_code = self.status_code or status_code # self.info = self.info or info def __init__(self, response: Response, **kwargs): self.response = response super().__init__( message=kwargs.get("detail", "Nordigen API Error"), status_code=response.get_status_code(), info=response.get_raw_data(), )
[docs] class InvalidTokenError(NordigenClientError): pass
[docs] class TokenExpiredError(NordigenClientError): pass
[docs] class AuthenticationFailedError(NordigenClientError): pass
[docs] class OtherAuthenticationError(NordigenClientError): pass
[docs] class PageNotFoundError(NordigenClientError): pass
[docs] class TokenFormatError(ValueError): pass
[docs] class ResourceErrorHandler(BaseErrorHandler):
[docs] @staticmethod def get_exception(response: Response) -> exceptions.APIRequestError: exception = ErrorHandler.get_exception(response) try: json = response.get_json() except Exception: json = {} if response.get_status_code() == 401: return InvalidTokenError(response, **json) elif response.get_status_code() == 404: return PageNotFoundError(response, **json) elif 400 <= response.get_status_code() < 500: return NordigenClientError(response, **json) return exception
[docs] class SignonErrorHandler(ResourceErrorHandler):
[docs] @staticmethod def get_exception(response: Response) -> exceptions.APIRequestError: exception = ResourceErrorHandler.get_exception(response) try: json = response.get_json() except Exception: json = {} if response.get_status_code() == 401: return AuthenticationFailedError(response, **json) return exception