summaryrefslogtreecommitdiff
path: root/lib/powerdnsex/config.ex
diff options
context:
space:
mode:
Diffstat (limited to 'lib/powerdnsex/config.ex')
-rw-r--r--lib/powerdnsex/config.ex36
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