Skip to content

#493 - Reverte API CDEP

Felipe Hargreaves requested to merge Hargre/radar:493-fix_api_cdep into master

Mudanças Realizadas

  • Trocamos a lógica de requisições para utilizar uma biblioteca python para SOAP, o zeep. Ao fazer a conexão com o webservice da Câmara, ela já cria os métodos contendo as requisições, e já retorna a resposta como um objeto XML. Isso reduz parte do trabalho para montar as requisições e tratar os resultados.

    Um exemplo de requisição:

    client = zeep.Client('https://www.camara.leg.br/SitCamaraWS/Proposicoes.asmx?wsdl')
    service = client.service
    prop = service.ObterProposicaoPorId('17338') # método gerado automaticamente

    A gente também reparou que aquele 403 estava de alguma forma relacionado com o jeito que a gente tava instanciando esse client. Inicialmente ele estava sendo criado uma única vez e compartilhado pela classe. Mudamos a lógica para instanciar um client novo por requisição e o erro parou de acontecer. Talvez ele estivesse mantendo várias conexões abertas e estivesse esbarrando naqueles limites que o pessoal da Câmara informou.

    • O zeep precisa de algumas dependências que não existiam no container. Pra conseguir rodar, adicionamos elas ao Dockerfile do projeto. Eu acho que ficou um pouco fora do padrão já utilizado, pois pelo que vi a instalação de dependências fica no DockerfileBase, não no Dockerfile, mas não sabia muito bem como modificá-lo.
  • Revertemos as requisições para utilizar o Webservice SOAP. Usamos a branch antiga de revert como base e fomos fazendo as adaptações necessárias. Na maior parte foram pequenas mudanças na leitura dos objetos XML, além de novos tratamentos de exceções.

  • Revertemos e corrigimos os testes, tanto no tests_cdep.py quanto no tests_cdep_integracao.py. Eles estão todos passando, mas ficou uma questão pendente. Os testes unitários não estão utilizando os mocks indicados, continuam fazendo requisições pro webservice como se os mocks não existissem. Os testes passam apesar disso, mas foge um pouco do escopo do teste unitário, né? Não sabemos muito bem o que aconteceu. Além disso, a gente reparou que praticamente todos os .xml usados pelos mocks não existem mais no repositório. Tem apenas um, e o restante é de arquivos json, provavelmente usados para testar a API nova. Provavelmente vamos ter que procurar um commit antigo para recuperar os arquivos. Estávamos pensando em deixar essa questão para uma issue nova, com apenas esse foco. O que acham?

Edited by Diego Rabatone Oliveira

Merge request reports