defmodule MangaEx.HttpClient.Curl do require Logger def get_curl(url, opts \\ []) do args = opts ++ [ "-H", "user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36", "-s" ] "curl" |> System.cmd(args ++ [URI.encode(url)], []) |> case do {body, _} when is_binary(body) -> body {error, _} when is_binary(error) -> :timer.sleep(:timer.seconds(1)) get_curl(url) errors -> handle_errors(errors) end end def curl_expected_errors do [ "error code: 1007", "\r\n