defmodule DigitalToken.Config do
poison = if(Code.ensure_loaded?(Poison), do: Poison, else: nil)
jason = if(Code.ensure_loaded?(Jason), do: Jason, else: nil)
digital_token_json = Application.compile_env(:digital_token, :json_library)
@json_lib digital_token_json || jason || poison
cond do
Code.ensure_loaded?(@json_lib) and function_exported?(@json_lib, :decode!, 1) ->
:ok
digital_token_json ->
raise ArgumentError,
"Could not load configured :json_library, " <>
"make sure #{inspect(digital_token_json)} is listed as a dependency"
true ->
raise ArgumentError, """
A JSON library has not been configured.\n
Please configure a JSON lib in your `mix.exs`
file. The suggested library is `:jason`.
For example in your `mix.exs`:
def deps() do
[
{:jason, "~> 1.0"},
...
]
end
You can then configure this library for `ex_cldr`
in your `config.exs` as follows:
config :digital_token,
json_library: Jason
If no configuration is provided, `digital_token` will
attempt to detect if Jason or Poison are configured.
"""
end
@doc """
Return the configured json lib
"""
def json_library do
@json_lib
end
end