Skip to content

Commit

Permalink
add httpclient cookbook
Browse files Browse the repository at this point in the history
  • Loading branch information
loyer78 authored and sabine committed May 9, 2024
1 parent ffbc218 commit 7f5c633
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 0 deletions.
53 changes: 53 additions & 0 deletions data/cookbook/http-misc/00-cohttp.ml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
---
packages:
- name: "lwt"
tested_version: "5.7.0"
used_libraries:
- lwt
- lwt.unix
- name: "lwt_ppx"
tested_version: "2.1.0"
used_libraries:
- lwt_ppx
- name: "cohttp"
tested_version: "5.3.1"
used_libraries:
- cohttp
- name: "cohttp-lwt-unix"
tested_version: "5.3.0"
used_libraries:
- cohttp-lwt-unix
discussion: |
- **About `cohttp`:** The `cohttp` provides a client and a server implementation of HTTP(S)
- **Reference:** The `cohttp` package is documented on the [ocaml-cohttp page](https://github.com/mirage/ocaml-cohttp).
---

let url = "https://www.ocaml.org"

(* The `get` function fetch the ressource. The status code is analysed, and if all is ok, return the body of the answer. If not, the reason of the failure *)

let http_get url =
let%lwt (resp,body) = Cohttp_lwt_unix.Client.get
(Uri.of_string url) in
let code = resp
|> Cohttp.Response.status
|> Cohttp.Code.code_of_status in
if Cohttp.Code.is_success code
then
let%lwt b = Cohttp_lwt.Body.to_string body in
Lwt.return (Ok b)
else
Lwt.return (Error (Cohttp.Code.reason_phrase_of_code code))

(* Let's call the `http_get` function. *)
let () =
Lwt_main.run @@
match%lwt http_get url with
| Error str ->
Printf.printf "%s:fail\n" url;
Printf.printf "Error: %s\n" str;
Lwt.return ()
| Ok result ->
Printf.printf "%s:succed\n" url;
print_string result;
Lwt.return ()
2 changes: 2 additions & 0 deletions data/cookbook/tasks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -230,6 +230,8 @@ categories:
slug: download-file-to-temporary-dir
- title: Make a Partial Download with HTTP Range Header
slug: make-partial-download-with-http-range-header
- title: Miscellaneous
slug: http-misc
- title: Dealing with HTML
tasks:
- title: Render a HTML Template
Expand Down

0 comments on commit 7f5c633

Please sign in to comment.