Compare commits

..

7 commits

Author SHA1 Message Date
Simon Cruanes
246de4a74c
Merge 169c19b679 into 6203e7a4a7 2025-05-01 15:44:58 -04:00
Simon Cruanes
169c19b679
chore: bounds on eio 2025-05-01 15:44:51 -04:00
Simon Cruanes
711312141a
CI 2025-05-01 15:43:48 -04:00
Simon Cruanes
42f8ed40af
example with eio 2025-05-01 15:43:05 -04:00
Simon Cruanes
b1dfdf1f39
feat: tiny_httpd_eio library
provides a tiny_httpd server that relies on Eio for non-blocking
sockets and for concurrency using eio fibers.
2025-05-01 15:37:09 -04:00
Simon Cruanes
365889557c
format code 2025-05-01 13:40:03 -04:00
Simon Cruanes
2a7e597643
ocamlformat 2025-05-01 13:39:58 -04:00
6 changed files with 8 additions and 34 deletions

View file

@ -26,6 +26,11 @@ let atomic_before_412 =
let atomic_after_412 = {|include Atomic|}
let write_file file s =
let oc = open_out file in
output_string oc s;
close_out oc
let () =
let version = Scanf.sscanf Sys.ocaml_version "%d.%d.%s" (fun x y _ -> x, y) in
print_endline

View file

@ -91,34 +91,3 @@ module Private_ = struct
end
let pp out x = Format.pp_print_string out (to_string x)
let rec to_url_rec : type b. Buffer.t -> (b, string) t -> b =
fun buf route ->
match route with
| Fire -> Buffer.contents buf
| Rest { url_encoded = _ } ->
fun str ->
Buffer.add_string buf str;
Buffer.contents buf
| Compose (comp, rest) ->
(match comp with
| Exact s ->
Buffer.add_string buf s;
Buffer.add_char buf '/';
to_url_rec buf rest
| Int ->
fun i ->
Printf.bprintf buf "%d/" i;
to_url_rec buf rest
| String ->
fun s ->
Printf.bprintf buf "%s/" s;
to_url_rec buf rest
| String_urlencoded ->
fun s ->
Printf.bprintf buf "%s/" (Util.percent_encode s);
to_url_rec buf rest)
let to_url (h : ('a, string) t) : 'a =
let buf = Buffer.create 16 in
to_url_rec buf h

View file

@ -53,8 +53,6 @@ val to_string : _ t -> string
(** Print the route.
@since 0.7 *)
val to_url : ('a, string) t -> 'a
module Private_ : sig
val eval : string list -> ('a, 'b) t -> 'a -> 'b option
end

View file

@ -15,6 +15,7 @@ module Head_middleware = struct
type t = { handle: 'a. 'a Request.t -> 'a Request.t }
let trivial = { handle = Fun.id }
let[@inline] apply (self : t) req = self.handle req
let[@inline] apply' req (self : t) = self.handle req
let to_middleware (self : t) : Middleware.t =

View file

@ -1,6 +1,7 @@
(* adapted from https://github.com/sindresorhus/html-tags (MIT licensed) *)
let pf = Printf.printf
let spf = Printf.sprintf
let void =
[

View file

@ -8,7 +8,7 @@ CAMLprim value tiny_httpd_ws_apply_masking(value _mask_key, value _mask_offset,
CAMLparam5(_mask_key, _mask_offset, _buf, _offset, _len);
char const *mask_key = String_val(_mask_key);
unsigned char *buf = Bytes_val(_buf);
char *buf = Bytes_val(_buf);
intnat mask_offset = Int_val(_mask_offset);
intnat offset = Int_val(_offset);
intnat len = Int_val(_len);