예제 #1
0
    def __tratarRespostaHTTP(self, respostaHTTP):

        if respostaHTTP.status_code < 200 or respostaHTTP.status_code > 300:
            retorno = Retorno(
                False, self,
                'Erro de comunicação com a Iter. %s' % respostaHTTP.text,
                'ErroComunicacaoIter', respostaHTTP.status_code)
        else:
            retorno = Retorno(True, self)
            dadosRetorno = respostaHTTP.json()

            if isinstance(dadosRetorno, list):
                if len(dadosRetorno) > 0:
                    dadosRetorno = dadosRetorno[0]
                else:
                    dadosRetorno = None

            if dadosRetorno:
                retorno.dados = dadosRetorno

                if 'token' in dadosRetorno:
                    self.credencial_iter.set_token_iter(dadosRetorno['token'])
                    retorno.credencial = self.credencial_iter
            else:
                # nao localizado
                retorno = Retorno(False, self, respostaHTTP.text, '', 404)

        self.registrar_retorno(retorno, 'Retorno da Iter.')
        return retorno
예제 #2
0
    def __autenticarIter(self):
        self.headers_iter = None
        chave_iter_cliente = None
        chave_iter_servidor = config('CHAVE_ITER')
        token_iter = ''

        if (self.credencial_iter):
            chave_iter_cliente = self.credencial_iter.chave_iter_cli
            token_iter = self.credencial_iter.token_iter

        # Atribui as chaves, parcial do servidor e parcial do cliente para descriptografar/criptografar o token.
        self.credencial_iter.chave_iter_cli = chave_iter_cliente
        self.credencial_iter.chave_iter_serv = chave_iter_servidor
        self.credencial_iter.token_iter = token_iter

        if token_iter and len(token_iter) > 0:

            retorno = Retorno(True, self)
            retorno.credencial = self.credencial_iter
        else:
            arquivo_iter = open('.env_cred_iter', 'rb')

            cred_iter_cripto = arquivo_iter.read()
            if (cred_iter_cripto):
                # atribui usuario e senha criptografados para descriptografar com get_token_iter()
                self.credencial_iter.token_iter = cred_iter_cripto

            headers = {
                'Authorization':
                'Basic %s' % self.credencial_iter.get_token_iter()
            }
            r = requests.get("http://cnxs-api.itertelemetria.com/v1/sign_in",
                             headers=headers)

            retorno = self.__tratarRespostaHTTP(r)

        self.retorno_autenticacao = retorno

        if self.retorno_autenticacao.estado.ok:
            # self.credencial = retorno.credencial
            token = self.credencial_iter.get_token_iter()

            self.headers_iter = {
                'Authorization': 'Bearer %s' % token,
                'Content-Type': 'application/json'
            }