diff options
author | ᴜɴᴋɴᴡᴏɴ <u@gogs.io> | 2020-03-22 22:07:22 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-22 22:07:22 +0800 |
commit | 22717a1c064511cf37c46af5e650baf7184cf25b (patch) | |
tree | f98bb991145605567f8b43506a7add855db0a90f /internal/cmd/web.go | |
parent | 82e511ddb1d1e98ebe6b1931766b0835fc066883 (diff) |
webhook: overhaul route handlers (#6002)
* Overual route handlers and fixes #5366
* Merge routes for repo and org
* Inject OrgRepoContext
* DRY validateWebhook
* DRY c.HasError
* Add tests
* Update CHANGELOG
Diffstat (limited to 'internal/cmd/web.go')
-rw-r--r-- | internal/cmd/web.go | 45 |
1 files changed, 19 insertions, 26 deletions
diff --git a/internal/cmd/web.go b/internal/cmd/web.go index e8b8f57a..3ef925f4 100644 --- a/internal/cmd/web.go +++ b/internal/cmd/web.go @@ -356,6 +356,23 @@ func runWeb(c *cli.Context) error { reqRepoAdmin := context.RequireRepoAdmin() reqRepoWriter := context.RequireRepoWriter() + webhookRoutes := func() { + m.Group("", func() { + m.Get("", repo.Webhooks) + m.Post("/delete", repo.DeleteWebhook) + m.Get("/:type/new", repo.WebhooksNew) + m.Post("/gogs/new", bindIgnErr(form.NewWebhook{}), repo.WebhooksNewPost) + m.Post("/slack/new", bindIgnErr(form.NewSlackHook{}), repo.WebhooksSlackNewPost) + m.Post("/discord/new", bindIgnErr(form.NewDiscordHook{}), repo.WebhooksDiscordNewPost) + m.Post("/dingtalk/new", bindIgnErr(form.NewDingtalkHook{}), repo.WebhooksDingtalkNewPost) + m.Get("/:id", repo.WebhooksEdit) + m.Post("/gogs/:id", bindIgnErr(form.NewWebhook{}), repo.WebhooksEditPost) + m.Post("/slack/:id", bindIgnErr(form.NewSlackHook{}), repo.WebhooksSlackEditPost) + m.Post("/discord/:id", bindIgnErr(form.NewDiscordHook{}), repo.WebhooksDiscordEditPost) + m.Post("/dingtalk/:id", bindIgnErr(form.NewDingtalkHook{}), repo.WebhooksDingtalkEditPost) + }, repo.InjectOrgRepoContext()) + } + // ***** START: Organization ***** m.Group("/org", func() { m.Group("", func() { @@ -396,20 +413,7 @@ func runWeb(c *cli.Context) error { m.Post("/avatar", binding.MultipartForm(form.Avatar{}), org.SettingsAvatar) m.Post("/avatar/delete", org.SettingsDeleteAvatar) - m.Group("/hooks", func() { - m.Get("", org.Webhooks) - m.Post("/delete", org.DeleteWebhook) - m.Get("/:type/new", repo.WebhooksNew) - m.Post("/gogs/new", bindIgnErr(form.NewWebhook{}), repo.WebHooksNewPost) - m.Post("/slack/new", bindIgnErr(form.NewSlackHook{}), repo.SlackHooksNewPost) - m.Post("/discord/new", bindIgnErr(form.NewDiscordHook{}), repo.DiscordHooksNewPost) - m.Post("/dingtalk/new", bindIgnErr(form.NewDingtalkHook{}), repo.DingtalkHooksNewPost) - m.Get("/:id", repo.WebHooksEdit) - m.Post("/gogs/:id", bindIgnErr(form.NewWebhook{}), repo.WebHooksEditPost) - m.Post("/slack/:id", bindIgnErr(form.NewSlackHook{}), repo.SlackHooksEditPost) - m.Post("/discord/:id", bindIgnErr(form.NewDiscordHook{}), repo.DiscordHooksEditPost) - m.Post("/dingtalk/:id", bindIgnErr(form.NewDingtalkHook{}), repo.DingtalkHooksEditPost) - }) + m.Group("/hooks", webhookRoutes) m.Route("/delete", "GET,POST", org.SettingsDelete) }) @@ -454,20 +458,9 @@ func runWeb(c *cli.Context) error { }) m.Group("/hooks", func() { - m.Get("", repo.Webhooks) - m.Post("/delete", repo.DeleteWebhook) - m.Get("/:type/new", repo.WebhooksNew) - m.Post("/gogs/new", bindIgnErr(form.NewWebhook{}), repo.WebHooksNewPost) - m.Post("/slack/new", bindIgnErr(form.NewSlackHook{}), repo.SlackHooksNewPost) - m.Post("/discord/new", bindIgnErr(form.NewDiscordHook{}), repo.DiscordHooksNewPost) - m.Post("/dingtalk/new", bindIgnErr(form.NewDingtalkHook{}), repo.DingtalkHooksNewPost) - m.Post("/gogs/:id", bindIgnErr(form.NewWebhook{}), repo.WebHooksEditPost) - m.Post("/slack/:id", bindIgnErr(form.NewSlackHook{}), repo.SlackHooksEditPost) - m.Post("/discord/:id", bindIgnErr(form.NewDiscordHook{}), repo.DiscordHooksEditPost) - m.Post("/dingtalk/:id", bindIgnErr(form.NewDingtalkHook{}), repo.DingtalkHooksEditPost) + webhookRoutes() m.Group("/:id", func() { - m.Get("", repo.WebHooksEdit) m.Post("/test", repo.TestWebhook) m.Post("/redelivery", repo.RedeliveryWebhook) }) |