Skip to content

Conversation

@mdcg-buser
Copy link
Contributor

@mdcg-buser mdcg-buser commented Dec 1, 2025

Problema Identificado

O método _request em client.py chama response.raise_for_status() antes de processar o corpo da resposta. Quando a API retorna um erro HTTP (4xx/5xx), o raise_for_status() lança uma exceção requests.exceptions.HTTPError genérica, impedindo que:

  • O response.json() seja chamado
  • O erro seja parseado para ErrorResponse
  • O BarteError "rico em contexto" seja lançado

Resultado: Usuários recebem HTTPError genérico ao invés de BarteError com informações úteis (code, action, charge_uuid).

Resumo das mudanças

Arquivo modificado: client.py

1. Método _request

  • Removido o raise_for_status() prematuro que suprimia os erros da API
  • Agora primeiro tenta parsear o JSON da resposta
  • Verifica se contém "errors" e lança BarteError com informações detalhadas
  • Usa raise_for_status() apenas como fallback para erros sem corpo estruturado

2. Remoção de código duplicado

  • Removido bloco de verificação de erros (agora centralizado) dos métodos: create_order, refund_charge e partial_refund_charge

Agora quando a API retorna um erro, você receberá um BarteError com todas as informações:
code: código do erro (ex: "BAR-7005")

  • message: descrição do erro
  • action: ação recomendada
  • charge_uuid: UUID da cobrança relacionada (quando aplicável)
  • response: objeto de resposta completo

@mdcg-buser mdcg-buser merged commit c1c29e8 into buserbrasil:main Dec 2, 2025
7 checks passed
@mdcg-buser mdcg-buser deleted the fix-barte-client-request-method branch December 2, 2025 19:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants