lib/inter.ex

defmodule Inter do
  alias QRCode.Generator

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

  def pix_charge(%Inter.Client{} = client, %Inter.Pix.Charge.Request{} = request) do
    client
    |> Inter.Client.token()
    |> Inter.Client.pix_charge(request)
  end

  def get_pix(%Inter.Client{} = client, txid) do
    case txid do
      _ -> client |> Inter.Client.token() |> Inter.Client.get_pix(txid)
    end
  end

  def pix_qr_code(%Inter.Client{} = client) do
    case client.response do
      %Inter.Pix.Charge.Response{} = response ->
        %Inter.Client{
          client
          | response: %Inter.Pix.Charge.Response{
              client.response
              | qrCode: Generator.generate(response.pixCopiaECola, :svg)
            }
        }

      nil ->
        nil
    end
  end
end