Monorepo for Tangled
tangled.org
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.Get("/edit", i.EditIssue)
25 r.Post("/edit", i.EditIssue)
26 r.Delete("/", i.DeleteIssue)
27 r.Post("/close", i.CloseIssue)
28 r.Post("/reopen", i.ReopenIssue)
29 })
30 })
31
32 r.Group(func(r chi.Router) {
33 r.Use(middleware.AuthMiddleware(i.oauth))
34 r.Get("/new", i.NewIssue)
35 r.Post("/new", i.NewIssue)
36 })
37 })
38
39 return r
40}