lib/consul/json_codec.ex
defmodule Consul.JsonCodec do
@type json_value :: nil | true | false | list | float | integer | String.t() | map
@callback decode(iodata) :: {:ok, json_value} | {:error, term}
@callback decode(iodata, keyword) :: {:ok, json_value} | {:error, term}
def decode(iodata), do: json_codec().decode(iodata)
def decode(iodata, opts), do: json_codec().decode(iodata, opts)
defp json_codec(), do: Application.fetch_env!(:consulex, :json_codec)
end