This repository has no description
1package pulls
2
3import (
4 "net/http"
5
6 "github.com/go-chi/chi/v5"
7 "tangled.org/core/appview/middleware"
8 "tangled.org/core/appview/pipelines"
9)
10
11func (s *Pulls) Router(mw *middleware.Middleware) http.Handler {
12 r := chi.NewRouter()
13 r.With(middleware.Paginate).Get("/", s.RepoPulls)
14 r.Get("/pipeline-statuses", pipelines.StatusesHandler(s.oauth, s.repoResolver, s.pages, s.logger))
15 r.With(middleware.AuthMiddleware(s.oauth)).Route("/new", func(r chi.Router) {
16 r.Get("/", s.NewPull)
17 r.Get("/refresh", s.RefreshCompose)
18 r.Post("/refresh", s.RefreshCompose)
19 r.Post("/", s.NewPull)
20 })
21
22 r.Route("/{pull}", func(r chi.Router) {
23 r.Use(mw.ResolvePull())
24 r.Get("/", s.RepoSinglePull)
25 r.Get("/opengraph", s.PullOpenGraphSummary)
26
27 r.Route("/round/{round}", func(r chi.Router) {
28 r.Get("/", s.RepoPullPatch)
29 r.Get("/interdiff", s.RepoPullInterdiff)
30 r.Get("/actions", s.PullActions)
31 })
32
33 r.Route("/round/{round}.patch", func(r chi.Router) {
34 r.Get("/", s.RepoPullPatchRaw)
35 })
36
37 r.Group(func(r chi.Router) {
38 r.Use(middleware.AuthMiddleware(s.oauth))
39 r.Get("/edit", s.EditPull)
40 r.Post("/edit", s.EditPull)
41 r.Route("/resubmit", func(r chi.Router) {
42 r.Get("/", s.ResubmitPull)
43 r.Post("/", s.ResubmitPull)
44 })
45 // permissions here require us to know pull author
46 // it is handled within the route
47 r.Post("/close", s.ClosePull)
48 r.Post("/reopen", s.ReopenPull)
49 r.Post("/subscribe", s.SubscribePull)
50 // collaborators only
51 r.Group(func(r chi.Router) {
52 r.Use(mw.RepoPermissionMiddleware("repo:push"))
53 r.Post("/merge", s.MergePull)
54 // maybe lock, etc.
55 })
56
57 r.Group(func(r chi.Router) {
58 r.Use(mw.RepoPermissionMiddleware("repo:push"))
59 r.Post("/trigger-ci", s.TriggerCi)
60 })
61 })
62 })
63 return r
64
65}