blob: 8771f5f18bcb09bb9738d3ffa130a5c6c0c0f618 (
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
47
48
49
50
51
52
53
|
(* -*- mode: tuareg; -*- *)
let root _req = Views.root () |> Dream_html.respond
module Repo = struct
open Git_presenters
let ( let* ) m f =
let open Lwt.Infix in
m >>= function
| Ok x -> f x
| Error e ->
let msg = Format.asprintf "%a" Git_unix.Store.pp_error e in
Views.error_page msg |> Dream_html.respond
let repo req = Dream.param req "repo_name"
let summary req =
let* branches = all_branches (repo req) in
let* commits = recent_commits (repo req) 10 in
let authors = [ "John Pork"; "Sebastian Jellybean" ] in
Views.Repo.summary (repo req) branches commits authors |> Dream_html.respond
let refs req =
let* branches = all_branches (repo req) in
Views.Repo.refs (repo req) branches |> Dream_html.respond
let log req =
let* commits = recent_commits (repo req) 100 in
Views.Repo.log (repo req) commits |> Dream_html.respond
let tree req = Views.Repo.tree (repo req) |> Dream_html.respond
let commit req =
let id = match Dream.query req "id" with Some id -> id | None -> "" in
let* commit = of_id (repo req) id in
Views.Repo.commit (repo req) commit |> Dream_html.respond
end
let all_handlers =
[
Dream.get "/" root;
Dream.scope "/:repo_name" []
Repo.
[
Dream.get "/" summary;
Dream.get "/refs/" refs;
Dream.get "/log/" log;
Dream.get "/tree/" tree;
Dream.get "/commit/" commit;
];
Dream.get "/static/**" (Dream.static "./lib/static");
]
|