diff options
Diffstat (limited to 'lib/recaptcha')
-rw-r--r-- | lib/recaptcha/http.ex | 22 | ||||
-rw-r--r-- | lib/recaptcha/http/mock_http_client.ex | 3 | ||||
-rw-r--r-- | lib/recaptcha/template.ex | 4 |
3 files changed, 22 insertions, 7 deletions
diff --git a/lib/recaptcha/http.ex b/lib/recaptcha/http.ex index 01c088a..0182a7c 100644 --- a/lib/recaptcha/http.ex +++ b/lib/recaptcha/http.ex @@ -2,14 +2,18 @@ defmodule Recaptcha.Http do @moduledoc """ Responsible for managing HTTP requests to the reCAPTCHA API """ - @headers [{"Content-type", "application/x-www-form-urlencoded"}, {"Accept", "application/json"}] + @headers [ + {"Content-type", "application/x-www-form-urlencoded"}, + {"Accept", "application/json"} + ] @url Application.get_env(:recaptcha, :verify_url) @timeout Application.get_env(:recaptcha, :timeout, 5000) @doc """ Sends an HTTP request to the reCAPTCHA version 2.0 API. - See the [documentation](https://developers.google.com/recaptcha/docs/verify#api-response) for more details on the API response. + See the [docs](https://developers.google.com/recaptcha/docs/verify#api-response) + for more details on the API response. ## Options @@ -17,12 +21,22 @@ defmodule Recaptcha.Http do ## Example - {:ok, %{ "success" => success, "challenge_ts" => ts, "hostname" => host, "error-codes" => errors}} = Recaptcha.Http.request_verification(%{ secret: "secret", response: "response", remote_ip: "remote_ip"}) + {:ok, %{ + "success" => success, + "challenge_ts" => ts, + "hostname" => host, + "error-codes" => errors + }} = Recaptcha.Http.request_verification(%{ + secret: "secret", + response: "response", + remote_ip: "remote_ip" + }) """ @spec request_verification(map, [timeout: integer]) :: {:ok, map} | {:error, [atom]} def request_verification(body, options \\ []) do + timeout = options[:timeout] || @timeout result = - with {:ok, response} <- HTTPoison.post(@url, body, @headers, timeout: options[:timeout] || @timeout), + with {:ok, response} <- HTTPoison.post(@url, body, @headers, timeout: timeout), {:ok, data} <- Poison.decode(response.body) do {:ok, data} end diff --git a/lib/recaptcha/http/mock_http_client.ex b/lib/recaptcha/http/mock_http_client.ex index 2355dd3..492376a 100644 --- a/lib/recaptcha/http/mock_http_client.ex +++ b/lib/recaptcha/http/mock_http_client.ex @@ -2,6 +2,7 @@ defmodule Recaptcha.Http.MockClient do @moduledoc """ A mock HTTP client used for testing. """ + alias Recaptcha.Http def request_verification(body, options \\ []) @@ -13,6 +14,6 @@ defmodule Recaptcha.Http.MockClient do # every other match is a pass through to the real client def request_verification(body, options) do send self(), {:request_verification, body, options} - Recaptcha.Http.request_verification(body, options) + Http.request_verification(body, options) end end diff --git a/lib/recaptcha/template.ex b/lib/recaptcha/template.ex index d644266..28db29c 100644 --- a/lib/recaptcha/template.ex +++ b/lib/recaptcha/template.ex @@ -2,8 +2,8 @@ defmodule Recaptcha.Template do @moduledoc """ Responsible for rendering boilerplate recaptcha HTML code, supports noscript fallback. - Currently the [explicit render](https://developers.google.com/recaptcha/docs/display#explicit_render) functionality - is not supported. + [Some](https://developers.google.com/recaptcha/docs/display#explicit_render) + functionality is not currently supported. In future this module may be separated out into a Phoenix specific library. """ |