defmodule ExCheckout.Config do
@doc """
Return value by key from config.exs file.
"""
alias ExCheckout.Carrier
def get(name, default \\ nil) do
Application.get_env(:ex_checkout, name, default)
end
@spec config() :: Keyword.t() | none()
def config() do
carriers = Application.get_env(:ex_checkout, :carriers, [])
payment_providers = Application.get_env(:ex_checkout, :payment_providers, [])
{carriers, payment_providers}
end
@spec carriers() :: [Carrier.t()]
def carriers() do
{data, _} = config()
data
|> Enum.map(fn {x, _} -> x end)
end
@spec carriers() :: [Carrier.t()]
def carriers(nil) do
{data, _} = config()
data
|> Enum.map(fn {x, _} -> x end)
end
@spec carriers(Tuple.t()) :: [Carrier.t()]
def carriers({config, _}) do
config
|> Enum.map(fn {x, _} -> x end)
end
@spec payment_providers() :: [Map.t()]
def payment_providers() do
{_, data} = config()
data
|> Enum.map(fn {_, x} -> x end)
end
@spec payment_providers() :: [Map.t()]
def payment_providers(nil) do
{_, data} = config()
data
|> Enum.map(fn {x, _} -> x end)
end
@spec payment_providers(List.t()) :: [Map.t()]
def payment_providers({_, config}) do
config
|> Enum.map(fn {x, _} -> x end)
end
end