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.Post("/", s.NewPull)
18 r.Post("/refresh", s.RefreshCompose) // TODO: remove this. we just have to refresh source & review steps
19 })
20 r.Get("/_/composediff", s.PullComposeDiffFragment)
21
22 r.Route("/{pull}", func(r chi.Router) {
23 r.Use(s.ResolvePullMiddleware)
24 r.Get("/opengraph", s.PullOpenGraphSummary)
25
26 // PR routes
27 r.Get("/", s.RedirectLatestVersion)
28 r.Get("/{version}", s.PullSingle)
29 r.Get("/{version}/{revspec}", s.PullSingle)
30 r.Get("/{version}.patch", s.PullPatchRaw)
31
32 // htmx fragments
33 r.Get("/{version}/_/actions", s.PullActions)
34
35 r.Get("/_/diff", s.PullDiffFragment)
36 r.Get("/_/interdiff", s.PullInterdiffFragment)
37
38 r.Group(func(r chi.Router) {
39 r.Use(middleware.AuthMiddleware(s.oauth))
40 r.Get("/edit", s.EditPull)
41 r.Post("/edit", s.EditPull)
42 r.Post("/resubmit", s.ResubmitPull)
43 r.Post("/close", s.ClosePull)
44 r.Post("/reopen", s.ReopenPull)
45 r.Post("/subscribe", s.SubscribePull)
46 // collaborators only
47 r.Group(func(r chi.Router) {
48 r.Use(mw.RepoPermissionMiddleware("repo:push"))
49 r.Post("/merge", s.MergePull)
50 // maybe lock, etc.
51 })
52
53 r.Group(func(r chi.Router) {
54 r.Use(mw.RepoPermissionMiddleware("repo:push"))
55 r.Post("/trigger-ci", s.TriggerCi)
56 })
57 })
58 })
59
60 return r
61
62}