forked from tangled.org/core
Monorepo for Tangled — https://tangled.org
at master 1.7 kB view raw
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}