summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorRicardo Hermida Ruiz <ricardo.ruiz@locaweb.com.br>2020-04-24 15:40:22 -0300
committerRicardo Hermida Ruiz <ricardo.ruiz@locaweb.com.br>2020-04-24 15:40:22 -0300
commita6889b0128f7266e506ea4ef6e7c5a8bd8bc3d58 (patch)
treee22d03d315d79bb2cd54f645c121b737d8fdf8e0 /lib
parentbump otp (diff)
parentTimeout option (diff)
Merge remote-tracking branch 'origin/add-timeout-support' into pooling
Diffstat (limited to 'lib')
-rw-r--r--lib/powerdnsex.ex2
-rw-r--r--lib/powerdnsex/config.ex26
-rw-r--r--lib/powerdnsex/http_client.ex6
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