gadgetobrr/examples/runweb.ml

30 lines
1 KiB
OCaml
Raw Normal View History

2024-04-16 06:58:24 +02:00
module S = Tiny_httpd
let asset_loader path =
match Content.read path with None -> assert false | Some asset -> asset
let () =
let server = S.create ~port:8000 () in
S.add_route_handler ~meth:`GET server S.Route.return (fun _req ->
S.Response.make_string
~headers:[ ("Content-Type", "text/html") ]
(Ok (asset_loader "index.html")) );
S.add_route_handler ~meth:`GET server
S.Route.(exact "script.js" @/ return)
(fun _req ->
S.Response.make_string
~headers:[ ("Content-Type", "application/javascript") ]
(Ok (asset_loader "script.js")) );
S.add_route_handler ~meth:`GET server
S.Route.(exact "style.css" @/ return)
(fun _req ->
S.Response.make_string
~headers:[ ("Content-Type", "text/css") ]
(Ok (asset_loader "style.css")) );
Printf.printf "listening on http://%s:%d\n%!" (S.addr server) (S.port server);
ignore @@ Sys.command "xdg-open http://localhost:8000";
ignore (match S.run server with Ok () -> () | Error e -> raise e)