package ezcurl
Install
Dune Dependency
Authors
Maintainers
Sources
md5=2255e9953d8b1dba7601d300631ea023
sha512=c3429bff46980e684d93c7e6b69ea39dd5f56a6f27e5b811e9f8433632ef312d1ff123759fa69aca8508d54f5597dffdaff41f1ab9ef3cf0a83a9ece100d5763
Description
README
EZCurl
"
A simple wrapper around OCurl, for easy tasks around http.
project goals
- be as simple to use as possible.
- be as reliable as possible (work is done by cURL and the ocurl bindings anyway).
- stable API with few dependencies, so that user code compiles without breakage for a long time.
Installation
- for the synchronous library:
opam install ezcurl
- for the lwt-baed library:
opam install ezcurl-lwt
(depends onezcurl
)
Usage
A small web crawler can be found in examples/argiope
. It's very incomplete and naive but demonstrates basic usage of Ezcurl_lwt.get
.
Synchronous API
The library lives in a module Ezcurl
, which wraps Curl.t
with functions such as get
that combine many different low level API calls into one. It also follows redirections by default, and returns a Ezcurl.response
object that contains the body, headers, and error code.
# #require "ezcurl";;
# let url = "https://curl.haxx.se/";;
val url : string = "https://curl.haxx.se/"
# let res = Ezcurl.get ~url ();;
...
# let content = match res with Ok c -> c | Error (_,s) -> failwith s;;
val content : Ezcurl_core.response =
...
# content.Ezcurl.code;;
- : int = 200
It is also possible to create a client with Ezcurl.make()
and re-use it across calls with the optional parameter client
.
Lwt API
Using ezcurl-lwt
, a module Ezcurl_lwt
becomes available, with functions that are similar to the ones in Ezcurl
but are non blocking. This makes it easy to run several queries in parallel:
# #require "ezcurl-lwt";;
# let urls = [
"https://en.wikipedia.org/wiki/CURL";
"https://en.wikipedia.org/wiki/OCaml";
"https://curl.haxx.se/";
];;
val urls : string list =
["https://en.wikipedia.org/wiki/CURL";
"https://en.wikipedia.org/wiki/OCaml"; "https://curl.haxx.se/"]
# open Lwt.Infix;;
# let codes =
List.map (fun url -> Ezcurl_lwt.get ~url ()) urls
|> Lwt_list.map_p
(fun fut ->
fut >>= function
| Ok r -> Lwt.return r.Ezcurl_lwt.code
| Error e -> Lwt.fail (Failure "oh no"))
;;
...
# codes;;
- : int list = [200; 200; 200]
Dev Dependencies (1)
-
odoc
with-doc
Used by (4)
-
ezcurl-lwt
= "0.2.1"
- osh
- swhid
- twirp_ezcurl
Conflicts
None