diff --git a/README.md b/README.md index b2ea231..a284474 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Add `overpex` to your list of dependencies in `mix.exs`: ```elixir def deps do - [{:overpex, "~> 0.3.0"}] + [{:overpex, "~> 0.3.1"}] end ``` @@ -29,6 +29,15 @@ config :overpex, The default URL is `http://overpass-api.de/api/interpreter`. +You can also set a timeout in miliseconds: + +```elixir +config :overpex, + timeout: 10000 # timeout of 10 seconds +``` + +The default timeout is `5000` (5 seconds). + ## Usage Query for nodes with name `Gielgen` without the body: diff --git a/lib/overpex/api.ex b/lib/overpex/api.ex index 796858d..43bf75c 100644 --- a/lib/overpex/api.ex +++ b/lib/overpex/api.ex @@ -13,7 +13,7 @@ defmodule Overpex.API do @spec query(String.t) :: {:ok, {:xml, String.t}} | {:ok, {:json, String.t}} | {:error, String.t} def query(query) do Overpex.Config.url() - |> HTTPoison.post(query) + |> HTTPoison.post(query, %{timeout: Overpex.Config.timeout}) |> process_response() end diff --git a/lib/overpex/config.ex b/lib/overpex/config.ex index 3fba932..ccb38ec 100644 --- a/lib/overpex/config.ex +++ b/lib/overpex/config.ex @@ -14,4 +14,16 @@ defmodule Overpex.Config do def url do Application.get_env(:overpex, :url, "http://overpass-api.de/api/interpreter") end + + @doc """ + Get timeout in ms to be used when quering the Overpass API + + ## Return values + + Returns the value found in the config files. If nothing is found, returns the default value of 5000 (5 seconds) + """ + @spec timeout :: Integer.t + def timeout do + Application.get_env(:overpex, :timeout, 5000) + end end diff --git a/mix.exs b/mix.exs index 994bfaf..0e753da 100644 --- a/mix.exs +++ b/mix.exs @@ -3,7 +3,7 @@ defmodule Overpex.Mixfile do def project do [app: :overpex, - version: "0.3.0", + version: "0.3.1", elixir: "~> 1.4", build_embedded: Mix.env == :prod, start_permanent: Mix.env == :prod, diff --git a/test/overpex/config_test.exs b/test/overpex/config_test.exs index 9929605..33cc98e 100644 --- a/test/overpex/config_test.exs +++ b/test/overpex/config_test.exs @@ -1,13 +1,23 @@ defmodule Overpex.ConfigTest do use ExUnit.Case - test "url/1 with existing config" do + test "url/0 with existing config" do Application.put_env(:overpex, :url, "http://example.com") assert Overpex.Config.url() == "http://example.com" end - test "url/1 without config" do + test "url/0 without config" do Application.delete_env(:overpex, :url) assert Overpex.Config.url() == "http://overpass-api.de/api/interpreter" end + + test "timeout/0 with existing config" do + Application.put_env(:overpex, :timeout, 666) + assert Overpex.Config.timeout() == 666 + end + + test "timeout/0 without config" do + Application.delete_env(:overpex, :timeout) + assert Overpex.Config.timeout() == 5000 + end end