Skip to content

suri-framework/blink

Repository files navigation

Blink

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.

Getting Started

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