diff options
author | Marius Peter <marius.peter@tutanota.com> | 2025-06-29 20:53:18 +0200 |
---|---|---|
committer | Marius Peter <marius.peter@tutanota.com> | 2025-06-29 20:53:18 +0200 |
commit | 156c3e3246acc287d795d74262123f70dc4e409d (patch) | |
tree | 6449cbb69fa76b1dbc54fd7c3418897e791eefa7 /lib | |
parent | 4eab19b89e68c86d16b5711c7ccfecb7e94312c9 (diff) |
Add README handling.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/handlers.ml | 42 |
1 files changed, 29 insertions, 13 deletions
diff --git a/lib/handlers.ml b/lib/handlers.ml index 5f67199..e7a76ce 100644 --- a/lib/handlers.ml +++ b/lib/handlers.ml @@ -12,14 +12,20 @@ module Repo = struct let summary req = let repo = Dream.param req "repo" in - let* branches = Resolvers.Branch.all repo in + let* branches = Resolvers.Reference.all repo in let* commits = Resolvers.Commit.recent repo 10 in Views.Repo.summary repo branches commits - let log req = + let commits req = let repo = Dream.param req "repo" in let* commits = Resolvers.Commit.recent repo 100 in - Views.Repo.log repo commits + Views.Repo.commits repo commits + + let commit req = + let repo = Dream.param req "repo" in + let id = Dream.param req "id" in + let* commit = Resolvers.Commit.of_id repo id in + Views.Repo.commit repo commit let files_at_head req = let repo = Dream.param req "repo" in @@ -34,16 +40,24 @@ module Repo = struct | `Tree tree -> Views.Repo.files repo tree | `Blob blob -> Views.Repo.file repo blob - let refs req = + let branches req = let repo = Dream.param req "repo" in - let* branches = Resolvers.Branch.all repo in - Views.Repo.refs repo branches + let* branches = Resolvers.Reference.branches repo in + Views.Repo.branches repo branches - let commit req = + let tags req = let repo = Dream.param req "repo" in - let id = Dream.param req "id" in - let* commit = Resolvers.Commit.of_id repo id in - Views.Repo.commit repo commit + let* tags = Resolvers.Reference.tags repo in + Views.Repo.tags repo tags + + let readme req = + let repo = Dream.param req "repo" in + let* readme = Resolvers.Repo.readme repo in + match readme with + | None -> + let content = "README does not exist for " ^ repo in + Views.Repo.file repo { content } + | Some file -> Views.Repo.file repo file end let all_handlers = @@ -55,11 +69,13 @@ let all_handlers = [ get "/" summary; get "/summary/" summary; - get "/log/" log; + get "/commits/" commits; + get "/commit/:id" commit; get "/files/" files_at_head; get "/file/:id" file_id; - get "/refs/" refs; - get "/commit/:id" commit; + get "/branches/" branches; + get "/tags/" tags; + get "/README" readme; ]; get "/static/**" (static "./lib/static"); ] |