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.ex26
1 files changed, 16 insertions, 10 deletions
diff --git a/lib/powerdnsex/config.ex b/lib/powerdnsex/config.ex
index 34d5889..314dbca 100644
--- a/lib/powerdnsex/config.ex
+++ b/lib/powerdnsex/config.ex
@@ -1,11 +1,10 @@
defmodule PowerDNSex.Config do
- defstruct url: "",
- token: ""
+ defstruct [:url, :token, timeout: 60]
alias PowerDNSex.Config
def data do
- set_attr_value = &Map.put(&2, &1, get_key(&1))
+ set_attr_value = &Map.update!(&2, &1, get_key(&1))
%Config{}
|> Map.from_struct()
@@ -20,6 +19,8 @@ defmodule PowerDNSex.Config do
def powerdns_token, do: data().token
+ def powerdns_timeout, do: :timer.seconds(data().timeout)
+
def valid?(), do: powerdns_url() && powerdns_token()
###
@@ -27,15 +28,20 @@ defmodule PowerDNSex.Config do
###
defp get_key(key) do
- case Application.fetch_env(:powerdnsex, key) do
- {:ok, {:system, env_var_name}} ->
- System.get_env(env_var_name)
+ fn default ->
+ case Application.fetch_env(:powerdnsex, key) do
+ {:ok, {:system, env_var_name}} ->
+ System.get_env(env_var_name)
+
+ {:ok, value} ->
+ value
- {:ok, value} ->
- value
+ _ when default != nil ->
+ default
- _ ->
- raise "[PowerDNSex] PowerDNS #{Atom.to_string(key)} not configured."
+ _ ->
+ raise "[PowerDNSex] PowerDNS #{Atom.to_string(key)} not configured."
+ end
end
end
end