Some example code
defmodule RedirectCounter.URL do
@max_redirects 10
def count_redirects(url) do
{ :ok, response } = HTTPoison.head(url)
do_count(response.status_code, response.headers["Location"], 0)
end
defp do_count(_status_code, _url, @max_redirects), do: raise "To many redirects"
defp do_count(status_code, url, redirect_count) when status_code in [301, 302, 307] do
{ :ok, response } = HTTPoison.head(url)
do_count(response.status_code, response.headers["Location"], redirect_count + 1)
end
defp do_count(_status_code, _url, redirect_count), do: redirect_count
end