defmodule Hyperswitch do
@moduledoc """
Documentation for `Hyperswitch`.
"""
## Module attributes
@api_key Application.compile_env!(:hyperswitch, :api_key)
## Public functions
@spec api_key() :: binary()
def api_key do
@api_key
end
@spec api_url() :: binary()
def api_url do
api_url = Application.get_env(:hyperswitch, :api_url, nil)
environment = Application.get_env(:hyperswitch, :environment, :sandbox)
cond do
is_url(api_url) ->
api_url
environment == :sandbox ->
"https://sandbox.hyperswitch.io"
environment == :production ->
raise "Not yet implemented!"
true ->
raise "Unable to determine the API url"
end
end
## Private functions
@spec is_url(nil | binary()) :: boolean()
defp is_url(value) when is_binary(value) do
String.starts_with?(value, "http://") or String.starts_with?(value, "https://")
end
defp is_url(_value) do
false
end
end