Пример #1
0
    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'])
Пример #2
0
 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'
                     }
                 }
             }
         }
     )
Пример #3
0
    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'])
Пример #4
0
    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))
Пример #5
0
    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))
Пример #6
0
 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'
                     }
                 }
             }
         })
Пример #7
0
 def load_dict_response(self, xml_response):
     return utils.etree_to_dict(ElementTree.XML(xml_response))