defmodule ApiBrasil.Core.Env do @moduledoc """ Variáveis de ambiente lidas pela SDK. Valores vazios contam como ausentes — definir `""` é a forma de desligar o que veio do ambiente. """ @bearer_token "APIBRASIL_BEARER_TOKEN" @device_token "APIBRASIL_DEVICE_TOKEN" @secret_key "APIBRASIL_SECRET_KEY" @base_url "APIBRASIL_BASE_URL" @doc "Bearer Token (JWT do login): `APIBRASIL_BEARER_TOKEN`." @spec bearer_token() :: String.t() def bearer_token, do: @bearer_token @doc "DeviceToken dos serviços device-based: `APIBRASIL_DEVICE_TOKEN`." @spec device_token() :: String.t() def device_token, do: @device_token @doc "SecretKey usada na criação de devices: `APIBRASIL_SECRET_KEY`." @spec secret_key() :: String.t() def secret_key, do: @secret_key @doc "Base da API: `APIBRASIL_BASE_URL`." @spec base_url() :: String.t() def base_url, do: @base_url @doc "Todas as variáveis de ambiente lidas pela SDK." @spec all() :: [String.t()] def all, do: [@bearer_token, @device_token, @secret_key, @base_url] @doc """ Lê uma variável de ambiente, tratando o valor vazio como ausente. """ @spec get(String.t()) :: String.t() | nil def get(name) do case System.get_env(name) do nil -> nil "" -> nil value -> value end end end