/mojito

An Elixir HTTP client, built on the low-level Mint client.

Primary LanguageElixir

Mojito Build Status Docs Hex.pm Version

Mojito is a simplified HTTP client for Elixir, built using the low-level Mint client.

It provides an interface that will feel familiar to users of other Elixir HTTP client libraries.

HTTPS, one-off requests, connection pooling, and request pipelining are supported out of the box.

Installation

Add mojito to your deps in mix.exs:

{:mojito, "~> 0.1.0"}

Single-request example

Mojito.request/5 can be used directly for making individual requests:

>>>> Mojito.request(:get, "https://jsonplaceholder.typicode.com/posts/1")
{:ok,
 %Mojito.Response{
   body: "{\n  \"userId\": 1,\n  \"id\": 1,\n  \"title\": \"sunt aut facere repellat provident occaecati excepturi optio reprehenderit\",\n  \"body\": \"quia et suscipit\\nsuscipit recusandae consequuntur expedita et cum\\nreprehenderit molestiae ut ut quas totam\\nnostrum rerum est autem sunt rem eveniet architecto\"\n}",
   headers: [
     {"content-type", "application/json; charset=utf-8"},
     {"content-length", "292"},
     {"connection", "keep-alive"},
     ...
   ],
   status_code: 200
 }}

Pool example

Mojito.Pool.request/6 can be used when a pool of persistent HTTP connections is desired:

>>>> children = [Mojito.Pool.child_spec(MyPool)]
>>>> {:ok, _pid} = Supervisor.start_link(children, strategy: :one_for_one)
>>>> Mojito.Pool.request(MyPool, :get, "http://example.com")
{:ok, %Mojito.Response{...}}

Connection pooling in Mojito is implemented using Poolboy.

Self-signed SSL/TLS certificates

To accept self-signed certificates in HTTPS connections, you can give the transport_opts: [verify: :verify_none] option to Mojito.request/5 or Mojito.Pool.request/6:

>>>> Mojito.request(:get, "https://localhost:8443/")
{:error, {:tls_alert, 'bad certificate'}}

>>>> Mojito.request(:get, "https://localhost:4443/", [], "", transport_opts: [verify: :verify_none])
{:ok, %Mojito.Response{...}}

Authorship and License

Copyright 2018-2019, Appcues, Inc.

Mojito is released under the MIT License.