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 submit(self, map, method, postfix): '''Realiza um requisição HTTP para a networkAPI. :param map: Dicionário com os dados para gerar o XML enviado no corpo da requisição HTTP. :param method: Método da requisição HTTP ('GET', 'POST', 'PUT' ou 'DELETE'). :param postfix: Posfixo a ser colocado na URL básica de acesso à networkAPI. Ex: /ambiente :return: Tupla com o código e o corpo da resposta HTTP: (< codigo>, < descricao>) :raise NetworkAPIClientError: Erro durante a chamada HTTP para acesso à networkAPI. ''' try: rest_request = RestRequest(self.get_url(postfix), method, self.user, self.password, self.user_ldap) return rest_request.submit(map) except RestError as e: raise ErrorHandler.handle(None, str(e))
def submit(self, map, method, postfix): '''Realiza um requisição HTTP para a networkAPI. :param map: Dicionário com os dados para gerar o XML enviado no corpo da requisição HTTP. :param method: Método da requisição HTTP ('GET', 'POST', 'PUT' ou 'DELETE'). :param postfix: Posfixo a ser colocado na URL básica de acesso à networkAPI. Ex: /ambiente :return: Tupla com o código e o corpo da resposta HTTP: (< codigo>, < descricao>) :raise NetworkAPIClientError: Erro durante a chamada HTTP para acesso à networkAPI. ''' try: rest_request = RestRequest( self.get_url(postfix), method, self.user, self.password, self.user_ldap) return rest_request.submit(map) except RestError as e: raise ErrorHandler.handle(None, str(e))