package piaf
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=00c3bea6d1a8c77dc18bbbbf1f449a78253cf17391ad153751b2e87f71307265
sha512=0f35e88b78ec1f1cd06a972ee69e29a8983b4c07dbc0268cc9764d8df5d9c2402cc3710874f54a111095fb57a08fe582d99d1b7e070e141e260af6ced50172aa
Description
Piaf is an HTTP library and webserver written entirely in OCaml.
Published: 05 Feb 2021
README
piaf
Piaf is a client library for the HTTP/1.X and HTTP/2 protocols written entirely in OCaml.
Installation
Piaf is released to OPAM.
You can depend on it via esy or by running opam install piaf
.
Note: make sure to mirror Piaf's own resolutions located in the opam file.
Usage & Examples
TODO, read the mli file for now.
Examples
open Piaf
let get_sync url =
let open Lwt_result.Syntax in
Lwt_main.run begin
print_endline("Sending request...");
let* response = Client.Oneshot.get (Uri.of_string url) in
if (Status.is_successful response.status) then
Body.to_string response.body
else
let message = Status.to_string response.status in
Lwt.return (Error (`Msg message))
end
let () =
match get_sync "https://example.com" with
| Ok body -> print_endline body
| Error error ->
let message = Error.to_string error in
prerr_endline ("Error: " ^ message)
There's a more substantive example of using Piaf's API in bin/carl.ml, an implementation of a subset of curl, in caml.
Development
There's two ways to get a development environemnt up and running. If you have (or don't mind getting) nix
installed, the repository includes scripts to set up a sandbox. Otherwise you can use opam
to install the necessary dependencies globally.
Option 1) Setting up the sandbox
Assuming nix
has been installed and set up, run nix-shell --pure
in the repository root. Once it's done building, you should have the development environment set up!
Option 2) Setting up opam
For this approach you'll need to install opam
and set it up with a switch using ocaml
>= 4.08. Once that's done, run opam pin . --deps-only
to install the dependencies.
Note that this installs the dependencies globally, and that the development environment is dependent on the switch used.
Building
Run dune build
to build, dune build --watch
to run a watcher daemon that will build incrementally.
Running examples
Run dune exec examples/docs/readme.exe
to run the simple example above.
Run dune exec bin/carl.exe
to run carl
, the curl
-like example.
License & Copyright
Copyright (c) 2019 António Nuno Monteiro
piaf is distributed under the 3-Clause BSD License, see LICENSE.
Dependencies (18)
- gluten-lwt-unix
- magic-mime
- uri
- result
- psq
- pecu
-
mrmime
>= "0.3.2" & < "0.4.0"
- lwt_ssl
-
ssl
>= "0.5.10"
- conf-libssl
-
lwt
>= "5.3.0"
- logs
- stdlib-shims
-
bigstringaf
>= "0.8.0"
-
faraday
>= "0.8.1"
- angstrom
-
dune
>= "2.5"
-
ocaml
>= "4.08" & < "5.0"
Dev Dependencies (2)
-
alcotest-lwt
with-test
-
alcotest
with-test