Packages

Production-grade Elixir client for the Token.io Open Banking platform (Payments v2, VRP, AIS, Banks, Refunds, Payouts, Settlement, Transfers, Tokens, Token Requests, Account on File, Sub-TPPs, Auth Keys, Reports, Webhooks, Verification).

Current section

Files

Jump to
tokenio_client lib tokenio application.ex
Raw

lib/tokenio/application.ex

defmodule TokenioClient.Application do
@moduledoc false
use Application
@spec start(Application.start_type(), term()) :: {:ok, pid()} | {:error, term()}
@impl Application
def start(_type, _args) do
children = [
TokenioClient.HTTP.TokenCache,
{Finch, name: TokenioClient.Finch, pools: finch_pools()}
]
opts = [strategy: :one_for_one, name: TokenioClient.Supervisor]
Supervisor.start_link(children, opts)
end
@spec finch_pools() :: map()
defp finch_pools do
sandbox =
Application.get_env(:tokenio_client, :sandbox_base_url, "https://api.sandbox.token.io")
prod = Application.get_env(:tokenio_client, :production_base_url, "https://api.token.io")
size = Application.get_env(:tokenio_client, :pool_size, 10)
count = Application.get_env(:tokenio_client, :pool_count, 1)
pool_config = [size: size, count: count]
for url <- Enum.uniq([sandbox, prod]), into: %{} do
uri = URI.parse(url)
base = "#{uri.scheme}://#{uri.host}"
{base, pool_config}
end
end
end