def from_xml_callback(cls, callback): """ Instantiate a :py:class:`altapay.Callback` object from an XML response. :rtype: :py:class:`altapay.Callback` instance. """ if isinstance(callback, str): callback = ElementTree.XML(callback.encode('utf-8')) response = utils.etree_to_dict(callback)['APIResponse'] elif isinstance(callback, ElementTree.Element): response = utils.etree_to_dict(callback)['APIResponse'] else: response = callback return cls(response['@version'], response['Header'], response['Body'])
def test_etree_to_dict(self): xml_response = self.load_xml_response('etree_to_dict.xml') tree = ElementTree.XML(xml_response) response_as_dict = utils.etree_to_dict(tree) self.assertEqual( response_as_dict, { 'APIResponse': { 'Header': { 'Date': '2015-12-12T21:35:23+01:00', 'ErrorCode': 0, 'Path': 'API/login', 'ErrorMessage': None }, '@version': 20150526, 'Body': { 'Result': 'OK', 'TestNode': { '#text': 'Test', '@value': 'test' } } } } )
def from_xml_callback(cls, callback): """ Instantiate a :py:class:`altapay.Callback` object from an XML response. :rtype: :py:class:`altapay.Callback` instance. """ if isinstance(callback, str): callback = ElementTree.XML(callback.encode('utf-8')) response = utils.etree_to_dict(callback)['APIResponse'] elif isinstance(callback, ElementTree.Element): response = utils.etree_to_dict(callback)['APIResponse'] else: response = callback return cls( response['@version'], response['Header'], response['Body'])
def _response(self, response, content): status = response.status_code logger.debug('Status: ' + str(status)) logger.debug('Content: ' + content) if status in (200, 201): return utils.etree_to_dict( ElementTree.XML(content.encode('utf-8'))) elif status == 401: raise exceptions.UnauthorizedAccessError( 'Credentials could not be validated against the AltaPay ' 'service.') elif 500 <= status <= 599: raise exceptions.ServerError( 'AltaPay service server error. Response code was: {}' .format(status)) raise exceptions.ResponseStatusError( 'Response code not allowed: {status}'.format(status=status))
def _response(self, response, content): status = response.status_code logger.debug('Status: ' + str(status)) logger.debug('Content: ' + content) if status in (200, 201): return utils.etree_to_dict(ElementTree.XML( content.encode('utf-8'))) elif status == 401: raise exceptions.UnauthorizedAccessError( 'Credentials could not be validated against the AltaPay ' 'service.') elif 500 <= status <= 599: raise exceptions.ServerError( 'AltaPay service server error. Response code was: {}'.format( status)) raise exceptions.ResponseStatusError( 'Response code not allowed: {status}'.format(status=status))
def test_etree_to_dict(self): xml_response = self.load_xml_response('etree_to_dict.xml') tree = ElementTree.XML(xml_response) response_as_dict = utils.etree_to_dict(tree) self.assertEqual( response_as_dict, { 'APIResponse': { 'Header': { 'Date': '2015-12-12T21:35:23+01:00', 'ErrorCode': 0, 'Path': 'API/login', 'ErrorMessage': None }, '@version': 20150526, 'Body': { 'Result': 'OK', 'TestNode': { '#text': 'Test', '@value': 'test' } } } })
def load_dict_response(self, xml_response): return utils.etree_to_dict(ElementTree.XML(xml_response))