Skip to content

suri-framework/blink

Folders and files

NameName
Last commit message
Last commit date

Latest commit

3d9b303 · Oct 23, 2024

History

37 Commits
Dec 29, 2023
Jan 23, 2024
Oct 23, 2024
Oct 18, 2024
Oct 18, 2024
Oct 20, 2024
May 6, 2024
Dec 22, 2023
Apr 23, 2024
Dec 25, 2023
Oct 23, 2024
Oct 18, 2024
Dec 22, 2023
Oct 18, 2024
May 6, 2024
May 6, 2024

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