summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoroliverpool <git@olivier.pfad.fr>2024-03-21 14:02:14 +0100
committeroliverpool <git@olivier.pfad.fr>2024-03-27 15:38:39 +0100
commit6b719f08d0fed21502925d86cfd94cad19510b2c (patch)
tree1f73220cdd2cf926ab5cf80d8ba295b6a3e15dcc
parent[REFACTOR] webhook msteams endpoint (diff)
downloadforgejo-6b719f08d0fed21502925d86cfd94cad19510b2c.tar.xz
forgejo-6b719f08d0fed21502925d86cfd94cad19510b2c.zip
[REFACTOR] webhook feishu endpoint
-rw-r--r--routers/web/repo/setting/webhook.go21
-rw-r--r--routers/web/web.go2
-rw-r--r--services/forms/repo_form.go12
-rw-r--r--services/webhook/feishu.go16
4 files changed, 15 insertions, 36 deletions
diff --git a/routers/web/repo/setting/webhook.go b/routers/web/repo/setting/webhook.go
index ead24614f1..b44da2510b 100644
--- a/routers/web/repo/setting/webhook.go
+++ b/routers/web/repo/setting/webhook.go
@@ -388,27 +388,6 @@ func gogsHookParams(ctx *context.Context) webhookParams {
}
}
-// FeishuHooksNewPost response for creating Feishu webhook
-func FeishuHooksNewPost(ctx *context.Context) {
- createWebhook(ctx, feishuHookParams(ctx))
-}
-
-// FeishuHooksEditPost response for editing Feishu webhook
-func FeishuHooksEditPost(ctx *context.Context) {
- editWebhook(ctx, feishuHookParams(ctx))
-}
-
-func feishuHookParams(ctx *context.Context) webhookParams {
- form := web.GetForm(ctx).(*forms.NewFeishuHookForm)
-
- return webhookParams{
- Type: webhook_module.FEISHU,
- URL: form.PayloadURL,
- ContentType: webhook.ContentTypeJSON,
- WebhookForm: form.WebhookForm,
- }
-}
-
// WechatworkHooksNewPost response for creating Wechatwork webhook
func WechatworkHooksNewPost(ctx *context.Context) {
createWebhook(ctx, wechatworkHookParams(ctx))
diff --git a/routers/web/web.go b/routers/web/web.go
index 6d2e380e06..fb4510af5b 100644
--- a/routers/web/web.go
+++ b/routers/web/web.go
@@ -403,7 +403,6 @@ func registerRoutes(m *web.Route) {
addWebhookAddRoutes := func() {
m.Get("/{type}/new", repo_setting.WebhooksNew)
m.Post("/gogs/new", web.Bind(forms.NewGogshookForm{}), repo_setting.GogsHooksNewPost)
- m.Post("/feishu/new", web.Bind(forms.NewFeishuHookForm{}), repo_setting.FeishuHooksNewPost)
m.Post("/wechatwork/new", web.Bind(forms.NewWechatWorkHookForm{}), repo_setting.WechatworkHooksNewPost)
m.Post("/packagist/new", web.Bind(forms.NewPackagistHookForm{}), repo_setting.PackagistHooksNewPost)
m.Post("/{type}/new", repo_setting.WebhookCreate)
@@ -411,7 +410,6 @@ func registerRoutes(m *web.Route) {
addWebhookEditRoutes := func() {
m.Post("/gogs/{id}", web.Bind(forms.NewGogshookForm{}), repo_setting.GogsHooksEditPost)
- m.Post("/feishu/{id}", web.Bind(forms.NewFeishuHookForm{}), repo_setting.FeishuHooksEditPost)
m.Post("/wechatwork/{id}", web.Bind(forms.NewWechatWorkHookForm{}), repo_setting.WechatworkHooksEditPost)
m.Post("/packagist/{id}", web.Bind(forms.NewPackagistHookForm{}), repo_setting.PackagistHooksEditPost)
m.Post("/{type}/{id:[0-9]+}", repo_setting.WebhookUpdate)
diff --git a/services/forms/repo_form.go b/services/forms/repo_form.go
index 2e30106ea2..a5c5bf3d16 100644
--- a/services/forms/repo_form.go
+++ b/services/forms/repo_form.go
@@ -292,18 +292,6 @@ func (f *NewGogshookForm) Validate(req *http.Request, errs binding.Errors) bindi
return middleware.Validate(errs, ctx.Data, f, ctx.Locale)
}
-// NewFeishuHookForm form for creating feishu hook
-type NewFeishuHookForm struct {
- PayloadURL string `binding:"Required;ValidUrl"`
- WebhookForm
-}
-
-// Validate validates the fields
-func (f *NewFeishuHookForm) Validate(req *http.Request, errs binding.Errors) binding.Errors {
- ctx := context.GetValidateContext(req)
- return middleware.Validate(errs, ctx.Data, f, ctx.Locale)
-}
-
// NewWechatWorkHookForm form for creating wechatwork hook
type NewWechatWorkHookForm struct {
PayloadURL string `binding:"Required;ValidUrl"`
diff --git a/services/webhook/feishu.go b/services/webhook/feishu.go
index 19a3a0cc03..b27acc9070 100644
--- a/services/webhook/feishu.go
+++ b/services/webhook/feishu.go
@@ -13,6 +13,7 @@ import (
"code.gitea.io/gitea/modules/git"
api "code.gitea.io/gitea/modules/structs"
webhook_module "code.gitea.io/gitea/modules/webhook"
+ "code.gitea.io/gitea/services/forms"
)
type feishuHandler struct{}
@@ -20,7 +21,20 @@ type feishuHandler struct{}
func (feishuHandler) Type() webhook_module.HookType { return webhook_module.FEISHU }
func (feishuHandler) FormFields(bind func(any)) FormFields {
- panic("TODO")
+ var form struct {
+ forms.WebhookForm
+ PayloadURL string `binding:"Required;ValidUrl"`
+ }
+ bind(&form)
+
+ return FormFields{
+ WebhookForm: form.WebhookForm,
+ URL: form.PayloadURL,
+ ContentType: webhook_model.ContentTypeJSON,
+ Secret: "",
+ HTTPMethod: http.MethodPost,
+ Metadata: nil,
+ }
}
func (feishuHandler) Metadata(*webhook_model.Webhook) any { return nil }