forked from
tangled.org/core
Monorepo for Tangled — https://tangled.org
1package pulls
2
3import (
4 "net/http"
5
6 "github.com/go-chi/chi/v5"
7 "tangled.org/core/appview/middleware"
8)
9
10func (s *Pulls) Router(mw *middleware.Middleware) http.Handler {
11 r := chi.NewRouter()
12 r.Get("/", s.RepoPulls)
13 r.With(middleware.AuthMiddleware(s.oauth)).Route("/new", func(r chi.Router) {
14 r.Get("/", s.NewPull)
15 r.Get("/patch-upload", s.PatchUploadFragment)
16 r.Post("/validate-patch", s.ValidatePatch)
17 r.Get("/compare-branches", s.CompareBranchesFragment)
18 r.Get("/compare-forks", s.CompareForksFragment)
19 r.Get("/fork-branches", s.CompareForksBranchesFragment)
20 r.Post("/", s.NewPull)
21 })
22
23 r.Route("/{pull}", func(r chi.Router) {
24 r.Use(mw.ResolvePull())
25 r.Get("/", s.RepoSinglePull)
26 r.Get("/opengraph", s.PullOpenGraphSummary)
27
28 r.Route("/round/{round}", func(r chi.Router) {
29 r.Get("/", s.RepoPullPatch)
30 r.Get("/interdiff", s.RepoPullInterdiff)
31 r.Get("/actions", s.PullActions)
32 r.With(middleware.AuthMiddleware(s.oauth)).Route("/comment", func(r chi.Router) {
33 r.Get("/", s.PullComment)
34 r.Post("/", s.PullComment)
35 })
36 })
37
38 r.Route("/round/{round}.patch", func(r chi.Router) {
39 r.Get("/", s.RepoPullPatchRaw)
40 })
41
42 r.Group(func(r chi.Router) {
43 r.Use(middleware.AuthMiddleware(s.oauth))
44 r.Route("/resubmit", func(r chi.Router) {
45 r.Get("/", s.ResubmitPull)
46 r.Post("/", s.ResubmitPull)
47 })
48 // permissions here require us to know pull author
49 // it is handled within the route
50 r.Post("/close", s.ClosePull)
51 r.Post("/reopen", s.ReopenPull)
52 // collaborators only
53 r.Group(func(r chi.Router) {
54 r.Use(mw.RepoPermissionMiddleware("repo:push"))
55 r.Post("/merge", s.MergePull)
56 // maybe lock, etc.
57 })
58 })
59 })
60 return r
61
62}