Source code for amadeus.client.errors

from pprint import pformat


[docs]class ResponseError(RuntimeError): ''' An Amadeus error :var response: The response object containing the raw HTTP response and the request used to make the API call. :vartype response: amadeus.Response :var code: A unique code for this type of error. Options include ``NetworkError``, ``ParserError``, ``ServerError``, ``AuthenticationError``, ``NotFoundError`` and ``UnknownError``. :vartype code: str ''' def __init__(self, response): self.response = response self.code = self.__determine_code() RuntimeError.__init__(self, self.description()) # PROTECTED # Log the error def _log(self, client): if (client.log_level == 'warn'): client.logger.warning( 'Amadeus %s: %s', self.code, pformat(self.description) ) # PRIVATE # Determines the description for this error, as used in in the error output def description(self): description = self.short_description(self.response) return description + self.long_description(self.response) # Determines the short description, printed after on the same line as the # error class name @staticmethod def short_description(response): if hasattr(response, 'status_code') and response.status_code: return '[{0}]'.format(response.status_code) else: return '[---]' # Determines the longer description, printed after the initial error def long_description(self, response): message = '' if not(response and response.parsed): return message if 'error_description' in response.result: message += self.error_description(self.response) if 'errors' in response.result: message += self.errors_descriptions(self.response) return message # Returns the description of a single error @staticmethod def error_description(response): message = '' if 'error' in response.result: message += '\n{0}'.format(response.result['error']) message += '\n{0}'.format(response.result['error_description']) return message # Returns the description of multiple errors def errors_descriptions(self, response): messages = map(self.errors_description, response.result['errors']) return ''.join(messages) # Returns the description of a single error in a multi error response @staticmethod def errors_description(error): message = '\n' if ('source' in error) and ('parameter' in error['source']): message += '[{0}] '.format(error['source']['parameter']) if 'detail' in error: message += error['detail'] return message # sets the error code to the name of this class def __determine_code(self): return self.__class__.__name__
[docs]class NetworkError(ResponseError): ''' This error occurs when there is some kind of error in the network ''' pass
[docs]class ParserError(ResponseError): ''' This error occurs when the response type was JSOn but could not be parsed ''' pass
[docs]class ServerError(ResponseError): ''' This error occurs when there is an error on the server ''' pass
[docs]class ClientError(ResponseError): ''' This error occurs when the client did not provide the right parameters ''' pass
[docs]class AuthenticationError(ResponseError): ''' This error occurs when the client did not provide the right credentials ''' pass
[docs]class NotFoundError(ResponseError): ''' This error occurs when the path could not be found ''' pass