[OCaml] Mobile-friendly clone of cgit.
Factor out handler logic.
lib/handlers.ml
@@ -10,48 +10,47 @@
10
10
let msg = Format.asprintf "%a" Resolvers.Store.pp_error e in
11
11
Views.error_page msg
12
12
13
Removed:
let summary req =
13
Added:
let handle handler req =
14
14
let repo = Dream.param req "repo" in
15
Added:
handler repo
16
Added:
17
Added:
let handle_id handler req =
18
Added:
let repo = Dream.param req "repo" in
19
Added:
let id = Dream.param req "id" in
20
Added:
handler repo id
21
Added:
22
Added:
let summary repo =
15
23
let* branches = Resolvers.Reference.branches repo in
16
24
let* commits = Resolvers.Commit.recent repo 10 in
17
25
Views.Repo.summary repo branches commits
18
26
19
Removed:
let commits req =
20
Removed:
let repo = Dream.param req "repo" in
27
Added:
let commits repo =
21
28
let* commits = Resolvers.Commit.recent repo 100 in
22
29
Views.Repo.commits repo commits
23
30
24
Removed:
let commit_id req =
25
Removed:
let repo = Dream.param req "repo" in
26
Removed:
let id = Dream.param req "id" in
31
Added:
let commit_id repo id =
27
32
let* commit = Resolvers.Commit.of_id repo id in
28
33
Views.Repo.commit repo commit
29
34
30
Removed:
let files_at_head req =
31
Removed:
let repo = Dream.param req "repo" in
35
Added:
let files_at_head repo =
32
36
let* tree = Resolvers.Tree.head repo in
33
37
Views.Repo.files repo tree
34
38
35
Removed:
let file_id req =
36
Removed:
let repo = Dream.param req "repo" in
37
Removed:
let id = Dream.param req "id" in
39
Added:
let file_id repo id =
38
40
let* res = Resolvers.blob_or_tree repo id in
39
41
match res with
40
42
| `Tree tree -> Views.Repo.files repo tree
41
43
| `Blob blob -> Views.Repo.file repo blob
42
44
43
Removed:
let branches req =
44
Removed:
let repo = Dream.param req "repo" in
45
Added:
let branches repo =
45
46
let* branches = Resolvers.Reference.branches repo in
46
47
Views.Repo.branches repo branches
47
48
48
Removed:
let tags req =
49
Removed:
let repo = Dream.param req "repo" in
49
Added:
let tags repo =
50
50
let* tags = Resolvers.Reference.tags repo in
51
51
Views.Repo.tags repo tags
52
52
53
Removed:
let readme req =
54
Removed:
let repo = Dream.param req "repo" in
53
Added:
let readme repo =
55
54
let* readme = Resolvers.Repo.readme repo in
56
55
Views.Repo.file repo
57
56
@@
@@ -67,15 +66,15 @@
67
66
scope "/:repo" []
68
67
Repo.
69
68
[
70
Removed:
get "/" summary;
71
Removed:
get "/summary/" summary;
72
Removed:
get "/commits/" commits;
73
Removed:
get "/commit/:id" commit_id;
74
Removed:
get "/files/" files_at_head;
75
Removed:
get "/file/:id" file_id;
76
Removed:
get "/branches/" branches;
77
Removed:
get "/tags/" tags;
78
Removed:
get "/README" readme;
69
Added:
get "/" (handle summary);
70
Added:
get "/summary/" (handle summary);
71
Added:
get "/commits/" (handle commits);
72
Added:
get "/commit/:id" (handle_id commit_id);
73
Added:
get "/files/" (handle files_at_head);
74
Added:
get "/file/:id" (handle_id file_id);
75
Added:
get "/branches/" (handle branches);
76
Added:
get "/tags/" (handle tags);
77
Added:
get "/README" (handle readme);
79
78
];
80
79
get "/static/**" (static "./lib/static");
81
80
]