blob: c7c18e9d3eadc6ec4a507dc07440b94f63d1d347 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
(* TODO *)
(* Dream.origin_referrer_check *)
let getAndPost path handler =
Dream.scope "/" []
[
Dream.get path handler;
Dream.post path Rsc.DreamRSC.stream_function_response;
]
let router =
Dream.router
([
(* rendering tricks *)
Dream.get "/output.css"
(Dream.from_filesystem "./_build/default/demo" "output.css");
Dream.get "/static/**" (Dream.static "./_build/default/client/app");
getAndPost Router.demoRenderToString (fun _ ->
Dream.html Pages.Hydrate.toString);
getAndPost Router.demoRenderToString (fun _ ->
Dream.html Pages.Hydrate.toStatic);
(* more demos *)
getAndPost Router.demoRenderToStream Pages.Comments.handler;
getAndPost Router.demoSinglePageRSC Pages.SinglePageRSC.handler;
getAndPost Router.demoRouterRSC Pages.RouterRSC.handler;
getAndPost Router.demoServerOnlyRSC Pages.ServerOnlyRSC.handler;
(* my actual routes *)
Dream.get "/root" (fun _ -> Dream.html "Roooot");
Dream.get "/login" (fun _ -> Dream.html "Welcome");
Dream.get "/blog/:poast" (fun req ->
Dream.html (Dream.param req "poast"));
Dream.get "/react" (fun _ -> Dream.html "Welcome");
Dream.get "/fail" (fun _ -> raise (Failure "Oh noes"));
Dream.post "/echo" (fun req ->
let%lwt body = Dream.body req in
Dream.respond ~headers:[ ("Content-Type", "application/json") ] body);
Dream.get "/" Pages.Index.handler;
]
@ Api.Json.routes @ Api.Stream.streams)
let server =
Dream.logger @@ Middleware.Logs.detailed_logger
@@ Middleware.Promise.count_requests
@@ Middleware.Counter.count_requests router
let () = Dream.run ~port:4444 server
|