diff options
Diffstat (limited to 'lib/powerdnsex/config.ex')
-rw-r--r-- | lib/powerdnsex/config.ex | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/lib/powerdnsex/config.ex b/lib/powerdnsex/config.ex new file mode 100644 index 0000000..50589d4 --- /dev/null +++ b/lib/powerdnsex/config.ex @@ -0,0 +1,36 @@ +defmodule PowerDNSex.Config do + defstruct url: "", + token: "" + + alias PowerDNSex.Config + + def data do + set_attr_value = &(Map.put(&2, &1, get_key(&1))) + + %Config{} + |> Map.from_struct + |> Map.keys + |> Enum.reduce(%Config{}, set_attr_value) + end + + def powerdns_url do + data.url + end + + def powerdns_token do + data.token + end + + ### + # Private + ### + + defp get_key(key) do + case Application.fetch_env(:powerdns, key) do + {:ok, {:system, env_var_name}} -> System.get_env(env_var_name) + {:ok, value} -> value + _ -> + raise "[PowerDNSex] PowerDNS #{Atom.to_string(key)} not configured." + end + end +end |