def unmarshall(self, content): try: return loads(content) except Exception as e: raise RestError( e, 'Erro ao gerar o mapa de resposta!\n' 'Conteúdo recebido:\n%s' % content)
def response(self, code, xml, force_list=None): """Cria um dicionário com os dados de retorno da requisição HTTP ou lança uma exceção correspondente ao erro ocorrido. Se a requisição HTTP retornar o código 200 então este método retorna o dicionário com os dados da resposta. Se a requisição HTTP retornar um código diferente de 200 então este método lança uma exceção correspondente ao erro. Todas as exceções lançadas por este método deverão herdar de NetworkAPIClientError. :param code: Código de retorno da requisição HTTP. :param xml: XML ou descrição (corpo) da resposta HTTP. :param force_list: Lista com as tags do XML de resposta que deverão ser transformadas obrigatoriamente em uma lista no dicionário de resposta. :return: Dicionário com os dados da resposta HTTP retornada pela networkAPI. """ if int(code) == 200: # Retorna o map return loads(xml, force_list)['networkapi'] elif int(code) == 500: code, description = self.get_error(xml) return ErrorHandler.handle(code, description) else: return ErrorHandler.handle(code, xml)
def get_error(self, xml): '''Obtem do XML de resposta, o código e a descrição do erro. O XML corresponde ao corpo da resposta HTTP de código 500. :param xml: XML contido na resposta da requisição HTTP. :return: Tupla com o código e a descrição do erro contido no XML: (< codigo_erro>, < descricao_erro>) ''' map = loads(xml) network_map = map['networkapi'] error_map = network_map['erro'] return int(error_map['codigo']), str(error_map['descricao'])
def unmarshall(self, content): try: return loads(content) except Exception as e: raise RestError(e, u'Erro ao gerar o mapa de resposta!\n' u'Conteúdo recebido:\n%s' % content)