Etude.Request

Parallel HTTP requests for etude

Installation

Etude.Request is available in Hex and can be installed as:

  1. Add etude_request to your list of dependencies in mix.exs:

    def deps do

     [{:etude_request, "~> 0.0.1"}]

    end

  2. Ensure etude_request is started before your application:

    def application do

     [applications: [:etude_request]]

    end

Usage

{gh_status, gh_headers, gh_body} = Etude.Request.get("https://api.github.com")

IO.inspect {gh_status, gh_headers, gh_body}
# {%Etude.Request.Status{request: #Function<...>},
#  %Etude.Request.Headers{request: #Function<...>},
#  %Etude.Request.Body{request: #Function<...>}}

{ip_status, ip_headers, ip_body} = Etude.Request.get("https://api.ipify.org")

IO.inspect Etude.resolve([{gh_status, gh_headers}, {ip_status, ip_body}])
# [{200, [{"Server", "GitHub.com"}, ...]},
#  {200, "123.456.789.0"}]

API

The options and functions should mostly be compatible with httpoison. One big exception is all functions in Etude.Request raise errors instead of return {:ok, value} | {:error, reason}, since error checking is done at request time instead of call time.