andreroggeri/pynubank

Melhor forma de deploy em cloud

Closed this issue · 5 comments

cobap commented

Olá pessoal, tudo bem? Alguém aqui já faz deploy em cloud? To quebrando a cabeça para fazer a p12 funcionar na Azure

Tentei pelo Key Vault deles, mas só aceitam PRM ou CER, e ai teria que fazer conversão...

To pensando em transformar em base64 e colocar hard-coded mesmo e ler pelo serverless. Será que funciona? Aceito sugestões 👍

Caso achem mais prático por outra cloud, pode ser também

Funciona! transforma do base64 para o .p12 de volta quando for usar dentro da aplicação

cobap commented

Boa! Vou tentar aqui Pedro, obrigado pela direção

Se você quiser evitar a criação do arquivo é possível manter tudo em memória extendendo o HttpClient.

algo como:

from pynubank import HttpClient, nubank

class MemoryCertHttp(HttpClient):
    def _cert_args(self):
        return {'pkcs12_data': self._cert, 'pkcs12_password': ''} if self._cert else {}

nu = Nubank(MemoryCertHttp())
nu.authenticate_with_cert('cpf', 'password', 'cert_data')

Onde 'cert_data' seria o certificado.

Dessa forma vc evita de deixar o certificado por aí

cobap commented

Eu estava vendo exatamente isso na biblioteca de requests que você usa (https://pypi.org/project/requests-pkcs12/)

Existe um método lá especifico de requisição baseado no p12 que tem como argumento o binário ao invés do path
image - Igual você mandou ai em cima

Depois com mais calma vou tentar fazer um pull request para habilitarmos esse método nativo pro pessoal. Acredito que muitos aqui usam sua lib para automação e similares (RIP GuiaBolso). Isso encaixa bem para jogarmos em cloud

Obrigado pela ajuda pessoal! 💯

Acho uma boa, assim fica mais simples.

Na época que implementei não lembro de ter visto esse pkcs12_data 😅 mas podemos manter os dois para retrocompatibilidade.