diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/powerdnsex.ex | 2 | ||||
-rw-r--r-- | lib/powerdnsex/config.ex | 26 | ||||
-rw-r--r-- | lib/powerdnsex/http_client.ex | 6 |
3 files changed, 23 insertions, 11 deletions
diff --git a/lib/powerdnsex.ex b/lib/powerdnsex.ex index fbb5003..b77389c 100644 --- a/lib/powerdnsex.ex +++ b/lib/powerdnsex.ex @@ -107,7 +107,7 @@ defmodule PowerDNSex do defp call(params) do :poolboy.transaction(@name, fn pid -> - GenServer.call(pid, params) + GenServer.call(pid, params, Config.powerdns_timeout) end) end end 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 diff --git a/lib/powerdnsex/http_client.ex b/lib/powerdnsex/http_client.ex index 13e5023..3431795 100644 --- a/lib/powerdnsex/http_client.ex +++ b/lib/powerdnsex/http_client.ex @@ -13,4 +13,10 @@ defmodule PowerDNSex.HttpClient do custom = ["X-API-Key": Config.powerdns_token()] Keyword.merge(headers, custom) end + + def process_request_options(options) do + custom_options = [ssl: [{:versions, [:'tlsv1.1']}], recv_timeout: Config.powerdns_timeout()] + Keyword.merge(options, custom_options) + end + end |