lib/inter.ex

defmodule Inter do
  alias QRCode.Generator

  require Inter.Protocols

  @moduledoc """
  Documentation for `Inter`.
  """

  def pix_charge(%Inter.Pix.Charge.Request{} = request) do
    Inter.TokenManager.get_client()
    |> Inter.Client.pix_charge(request)
  end

  def get_pix(txid) do
    case txid do
      _ -> Inter.TokenManager.get_client() |> Inter.Client.get_pix(txid)
    end
  end

  def cobranca_charge(%Inter.Cobranca.Charge.Request{} = request) do
    Inter.TokenManager.get_client()
    |> Inter.Client.cobranca_charge(request)
  end

  def get_cobranca(cod, conta_corrente) do
    case cod do
      _ -> Inter.TokenManager.get_client() |> Inter.Client.get_cobranca(cod, conta_corrente)
    end
  end

  def cobranca_charge(%Inter.Webhook.Request{} = request, type \\ :boleto) do
    Inter.TokenManager.get_client()
    |> Inter.Client.create_webhook(request, type)
  end

  def get_webhook(%Inter.Webhook.Request{} = request, type \\ :boleto) do
    Inter.TokenManager.get_client()
    |> Inter.Client.get_webhook(request, type)
  end

  def pix_qr_code(%Inter.Pix.Charge.Response{} = response) do
    %Inter.Pix.Charge.Response{
      response
      | qrCode: Generator.generate(response.pixCopiaECola, :svg)
    }
  end
end