A pure OCaml HTTP client for Riot, inspired by Elixir's Mint. It serves as a lower-level library for handling HTTP connections within a single process.
Here's a basic example where we fetch the OCaml.org website.
First we create a connection, which we can reuse:
let url = Uri.of_string "https://ocaml.org" in
let* conn = Blink.connect url in
This figures out the protocol that we will use, and returns a conn
value that
we make requests with:
let req = Http.Request.make "/" in
let* conn = Blink.request conn req () in
Finally, once we have made a request, we can call Blink.stream
to
stream-parse the results and receive the parts as they come:
let rec run conn =
let* conn, msgs = Blink.stream conn in
match msgs with
| [ `Done ] -> ()
| msgs -> handle_messages msgs; run conn
in
run conn
Or if we prefer to consume all messages and pull together a response, we can do so with Blink.await
:
let* _conn, response, body = Blink.await conn in