Packages

SDK oficial Elixir da plataforma APIBrasil: WhatsApp, SMS, consultas de CPF/CNPJ, veiculos, CEP, correios, pagamentos PIX/boleto e mais.

Current section

Files

Jump to
apibrasil lib api_brasil platform ip_whitelist.ex
Raw

lib/api_brasil/platform/ip_whitelist.ex

defmodule ApiBrasil.Platform.IpWhitelist do
@moduledoc """
IP Whitelist da conta (`/ip-whitelist/*`).
Restringe de quais IPs o Bearer Token pode ser usado.
alias ApiBrasil.Platform.IpWhitelist
{:ok, _} = IpWhitelist.set(client, ["200.0.0.1", "10.0.0.0/8"])
{:ok, _} = IpWhitelist.add_current(client)
"""
use ApiBrasil.Core.Service
route_get(:get, "ip-whitelist", "Configuração atual: `GET /ip-whitelist`.")
@doc """
Substitui a lista inteira: `PUT /ip-whitelist`.
`entries` é a lista completa de IPs/faixas (envia `ip_whitelist` no body).
"""
@spec set(Client.t(), [String.t()], keyword()) :: result()
def set(client, entries, opts \\ []) when is_list(entries) do
Service.put(client, "ip-whitelist", %{"ip_whitelist" => entries}, opts)
end
@doc "Como `set/3`, mas levanta `ApiBrasil.Core.Error` em caso de falha."
@spec set!(Client.t(), [String.t()], keyword()) :: map()
def set!(client, entries, opts \\ []) do
Service.unwrap!(set(client, entries, opts))
end
@doc "Adiciona uma entrada: `POST /ip-whitelist/add`."
@spec add(Client.t(), String.t(), keyword()) :: result()
def add(client, entry, opts \\ []) do
Service.post(client, "ip-whitelist/add", %{"entry" => entry}, opts)
end
@doc "Como `add/3`, mas levanta `ApiBrasil.Core.Error` em caso de falha."
@spec add!(Client.t(), String.t(), keyword()) :: map()
def add!(client, entry, opts \\ []) do
Service.unwrap!(add(client, entry, opts))
end
@doc "Remove uma entrada: `DELETE /ip-whitelist/remove`."
@spec remove(Client.t(), String.t(), keyword()) :: result()
def remove(client, entry, opts \\ []) do
Service.delete(client, "ip-whitelist/remove", %{"entry" => entry}, opts)
end
@doc "Como `remove/3`, mas levanta `ApiBrasil.Core.Error` em caso de falha."
@spec remove!(Client.t(), String.t(), keyword()) :: map()
def remove!(client, entry, opts \\ []) do
Service.unwrap!(remove(client, entry, opts))
end
@doc "Valida uma entrada: `POST /ip-whitelist/validate`."
@spec validate(Client.t(), String.t(), keyword()) :: result()
def validate(client, entry, opts \\ []) do
Service.post(client, "ip-whitelist/validate", %{"entry" => entry}, opts)
end
@doc "Como `validate/3`, mas levanta `ApiBrasil.Core.Error` em caso de falha."
@spec validate!(Client.t(), String.t(), keyword()) :: map()
def validate!(client, entry, opts \\ []) do
Service.unwrap!(validate(client, entry, opts))
end
route_get(
:current_ip,
"ip-whitelist/current-ip",
"IP atual visto pelo gateway: `GET /ip-whitelist/current-ip`."
)
route_empty(
:add_current,
:post,
"ip-whitelist/add-current",
"Adiciona o IP atual: `POST /ip-whitelist/add-current`."
)
route_empty(
:reset,
:post,
"ip-whitelist/reset",
"Libera todos os IPs (wildcard): `POST /ip-whitelist/reset`."
)
end