1package issues
2
3import (
4 "net/http"
5
6 "github.com/go-chi/chi/v5"
7 "tangled.org/core/appview/middleware"
8)
9
10func (i *Issues) Router(mw *middleware.Middleware) http.Handler {
11 r := chi.NewRouter()
12
13 r.Route("/", func(r chi.Router) {
14 r.With(middleware.Paginate).Get("/", i.RepoIssues)
15
16 r.Route("/{issue}", func(r chi.Router) {
17 r.Use(mw.ResolveIssue)
18 r.Get("/", i.RepoSingleIssue)
19 r.Get("/opengraph", i.IssueOpenGraphSummary)
20
21 // authenticated routes
22 r.Group(func(r chi.Router) {
23 r.Use(middleware.AuthMiddleware(i.oauth))
24 r.Post("/comment", i.NewIssueComment)
25 r.Route("/comment/{commentId}/", func(r chi.Router) {
26 r.Get("/", i.IssueComment)
27 r.Delete("/", i.DeleteIssueComment)
28 r.Get("/edit", i.EditIssueComment)
29 r.Post("/edit", i.EditIssueComment)
30 r.Get("/reply", i.ReplyIssueComment)
31 r.Get("/replyPlaceholder", i.ReplyIssueCommentPlaceholder)
32 })
33 r.Get("/edit", i.EditIssue)
34 r.Post("/edit", i.EditIssue)
35 r.Delete("/", i.DeleteIssue)
36 r.Post("/close", i.CloseIssue)
37 r.Post("/reopen", i.ReopenIssue)
38 })
39 })
40
41 r.Group(func(r chi.Router) {
42 r.Use(middleware.AuthMiddleware(i.oauth))
43 r.Get("/new", i.NewIssue)
44 r.Post("/new", i.NewIssue)
45 })
46 })
47
48 return r
49}