From bac33b304e76e533e929afc5ec910eb693fb63bf Mon Sep 17 00:00:00 2001 From: Danylo Negriienko Date: Tue, 30 Jun 2020 07:30:23 +0300 Subject: [PATCH] Attempts --- lib/microsoft_translator/client.ex | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/lib/microsoft_translator/client.ex b/lib/microsoft_translator/client.ex index 4540c6c..b0ba781 100644 --- a/lib/microsoft_translator/client.ex +++ b/lib/microsoft_translator/client.ex @@ -1,4 +1,5 @@ defmodule MicrosoftTranslator.Client do + @attempt_delay 3_000 @base_host "api.cognitive.microsofttranslator.com" @base_path "/" @api_methods %{ @@ -103,12 +104,22 @@ defmodule MicrosoftTranslator.Client do end) end - def fetch(api_method, headers, body, params) do + def fetch(api_method, headers, body, params, attempt \\ 0) do method = @api_methods[api_method].method url = "https://#{@base_host}#{@base_path}#{@api_methods[api_method].path}#{params}" - {:ok, response} = Mojito.request(method, url, headers, body) + case Mojito.request(method, url, headers, body) do + {:ok, response} -> + response - response + {:error, %Mojito.Error{reason: :timeout} = response} -> + if attempt < 2 do + :timer.sleep(@attempt_delay) + IO.inspect(url, label: "Attempt #{attempt + 1}") + fetch(api_method, headers, body, params, attempt + 1) + else + response + end + end end end