HTTP client for Elixir. Based on Gun and Poolboy.
- Supports HTTP/1 and HTTP/2 with automatic detection;
- Maintains separate connection pool for each pool_group:host:port combination;
- Allows per-pool configuration;
- Drop-in replacement for HTTPoison.
%MachineGun.Response{body: body, status_code: 200} =
MachineGun.get!(
"http://icanhazip.com",
[{"accept", "text/plain"}],
%{request_timeout: 5000, pool_group: :default})
(Options are included to show defaults and can be omitted.)
config :machine_gun,
# Default pool group
default: %{
pool_size: 4, # Poolboy size [1]
pool_max_overflow: 4, # Poolboy max_overflow [1]
pool_timeout: 1000,
conn_opts: %{} # Gun connection options [2]
}
(Configuration example shows defaults and can be omitted.)