]> source.dussan.org Git - gitea.git/commitdiff
refactor webhook *EditPost (#20780)
authoroliverpool <3864879+oliverpool@users.noreply.github.com>
Tue, 23 Aug 2022 06:52:35 +0000 (08:52 +0200)
committerGitHub <noreply@github.com>
Tue, 23 Aug 2022 06:52:35 +0000 (02:52 -0400)
routers/web/repo/webhook.go
routers/web/web.go

index d4419a1e1095703129cd9c9dab3b4bc21e4de9df..a5270a7761d160d64e2770a55156d872feaec378 100644 (file)
@@ -185,17 +185,19 @@ func ParseHookEvent(form forms.WebhookForm) *webhook.HookEvent {
        }
 }
 
-type webhookCreationParams struct {
+type webhookParams struct {
+       // Type should be imported from webhook package (webhook.XXX)
+       Type string
+
        URL         string
        ContentType webhook.HookContentType
        Secret      string
        HTTPMethod  string
        WebhookForm forms.WebhookForm
-       Type        string
        Meta        interface{}
 }
 
-func createWebhook(ctx *context.Context, params webhookCreationParams) {
+func createWebhook(ctx *context.Context, params webhookParams) {
        ctx.Data["Title"] = ctx.Tr("repo.settings.add_webhook")
        ctx.Data["PageIsSettingsHooks"] = true
        ctx.Data["PageIsSettingsHooksNew"] = true
@@ -248,8 +250,63 @@ func createWebhook(ctx *context.Context, params webhookCreationParams) {
        ctx.Redirect(orCtx.Link)
 }
 
+func editWebhook(ctx *context.Context, params webhookParams) {
+       ctx.Data["Title"] = ctx.Tr("repo.settings.update_webhook")
+       ctx.Data["PageIsSettingsHooks"] = true
+       ctx.Data["PageIsSettingsHooksEdit"] = true
+
+       orCtx, w := checkWebhook(ctx)
+       if ctx.Written() {
+               return
+       }
+       ctx.Data["Webhook"] = w
+
+       if ctx.HasError() {
+               ctx.HTML(http.StatusOK, orCtx.NewTemplate)
+               return
+       }
+
+       var meta []byte
+       var err error
+       if params.Meta != nil {
+               meta, err = json.Marshal(params.Meta)
+               if err != nil {
+                       ctx.ServerError("Marshal", err)
+                       return
+               }
+       }
+
+       w.URL = params.URL
+       w.ContentType = params.ContentType
+       w.Secret = params.Secret
+       w.HookEvent = ParseHookEvent(params.WebhookForm)
+       w.IsActive = params.WebhookForm.Active
+       w.HTTPMethod = params.HTTPMethod
+       w.Meta = string(meta)
+
+       if err := w.UpdateEvent(); err != nil {
+               ctx.ServerError("UpdateEvent", err)
+               return
+       } else if err := webhook.UpdateWebhook(w); err != nil {
+               ctx.ServerError("UpdateWebhook", err)
+               return
+       }
+
+       ctx.Flash.Success(ctx.Tr("repo.settings.update_hook_success"))
+       ctx.Redirect(fmt.Sprintf("%s/%d", orCtx.Link, w.ID))
+}
+
 // GiteaHooksNewPost response for creating Gitea webhook
 func GiteaHooksNewPost(ctx *context.Context) {
+       createWebhook(ctx, giteaHookParams(ctx))
+}
+
+// GiteaHooksEditPost response for editing Gitea webhook
+func GiteaHooksEditPost(ctx *context.Context) {
+       editWebhook(ctx, giteaHookParams(ctx))
+}
+
+func giteaHookParams(ctx *context.Context) webhookParams {
        form := web.GetForm(ctx).(*forms.NewWebhookForm)
 
        contentType := webhook.ContentTypeJSON
@@ -257,18 +314,27 @@ func GiteaHooksNewPost(ctx *context.Context) {
                contentType = webhook.ContentTypeForm
        }
 
-       createWebhook(ctx, webhookCreationParams{
+       return webhookParams{
+               Type:        webhook.GITEA,
                URL:         form.PayloadURL,
                ContentType: contentType,
                Secret:      form.Secret,
                HTTPMethod:  form.HTTPMethod,
                WebhookForm: form.WebhookForm,
-               Type:        webhook.GITEA,
-       })
+       }
 }
 
-// GogsHooksNewPost response for creating webhook
+// GogsHooksNewPost response for creating Gogs webhook
 func GogsHooksNewPost(ctx *context.Context) {
+       createWebhook(ctx, gogsHookParams(ctx))
+}
+
+// GogsHooksEditPost response for editing Gogs webhook
+func GogsHooksEditPost(ctx *context.Context) {
+       editWebhook(ctx, gogsHookParams(ctx))
+}
+
+func gogsHookParams(ctx *context.Context) webhookParams {
        form := web.GetForm(ctx).(*forms.NewGogshookForm)
 
        contentType := webhook.ContentTypeJSON
@@ -276,147 +342,228 @@ func GogsHooksNewPost(ctx *context.Context) {
                contentType = webhook.ContentTypeForm
        }
 
-       createWebhook(ctx, webhookCreationParams{
+       return webhookParams{
+               Type:        webhook.GOGS,
                URL:         form.PayloadURL,
                ContentType: contentType,
                Secret:      form.Secret,
                WebhookForm: form.WebhookForm,
-               Type:        webhook.GOGS,
-       })
+       }
 }
 
-// DiscordHooksNewPost response for creating discord hook
+// DiscordHooksNewPost response for creating Discord webhook
 func DiscordHooksNewPost(ctx *context.Context) {
+       createWebhook(ctx, discordHookParams(ctx))
+}
+
+// DiscordHooksEditPost response for editing Discord webhook
+func DiscordHooksEditPost(ctx *context.Context) {
+       editWebhook(ctx, discordHookParams(ctx))
+}
+
+func discordHookParams(ctx *context.Context) webhookParams {
        form := web.GetForm(ctx).(*forms.NewDiscordHookForm)
 
-       createWebhook(ctx, webhookCreationParams{
+       return webhookParams{
+               Type:        webhook.DISCORD,
                URL:         form.PayloadURL,
                ContentType: webhook.ContentTypeJSON,
                WebhookForm: form.WebhookForm,
-               Type:        webhook.DISCORD,
                Meta: &webhook_service.DiscordMeta{
                        Username: form.Username,
                        IconURL:  form.IconURL,
                },
-       })
+       }
 }
 
-// DingtalkHooksNewPost response for creating dingtalk hook
+// DingtalkHooksNewPost response for creating Dingtalk webhook
 func DingtalkHooksNewPost(ctx *context.Context) {
+       createWebhook(ctx, dingtalkHookParams(ctx))
+}
+
+// DingtalkHooksEditPost response for editing Dingtalk webhook
+func DingtalkHooksEditPost(ctx *context.Context) {
+       editWebhook(ctx, dingtalkHookParams(ctx))
+}
+
+func dingtalkHookParams(ctx *context.Context) webhookParams {
        form := web.GetForm(ctx).(*forms.NewDingtalkHookForm)
 
-       createWebhook(ctx, webhookCreationParams{
+       return webhookParams{
+               Type:        webhook.DINGTALK,
                URL:         form.PayloadURL,
                ContentType: webhook.ContentTypeJSON,
                WebhookForm: form.WebhookForm,
-               Type:        webhook.DINGTALK,
-       })
+       }
 }
 
-// TelegramHooksNewPost response for creating telegram hook
+// TelegramHooksNewPost response for creating Telegram webhook
 func TelegramHooksNewPost(ctx *context.Context) {
+       createWebhook(ctx, telegramHookParams(ctx))
+}
+
+// TelegramHooksEditPost response for editing Telegram webhook
+func TelegramHooksEditPost(ctx *context.Context) {
+       editWebhook(ctx, telegramHookParams(ctx))
+}
+
+func telegramHookParams(ctx *context.Context) webhookParams {
        form := web.GetForm(ctx).(*forms.NewTelegramHookForm)
 
-       createWebhook(ctx, webhookCreationParams{
+       return webhookParams{
+               Type:        webhook.TELEGRAM,
                URL:         fmt.Sprintf("https://api.telegram.org/bot%s/sendMessage?chat_id=%s", url.PathEscape(form.BotToken), url.QueryEscape(form.ChatID)),
                ContentType: webhook.ContentTypeJSON,
                WebhookForm: form.WebhookForm,
-               Type:        webhook.TELEGRAM,
                Meta: &webhook_service.TelegramMeta{
                        BotToken: form.BotToken,
                        ChatID:   form.ChatID,
                },
-       })
+       }
 }
 
-// MatrixHooksNewPost response for creating a Matrix hook
+// MatrixHooksNewPost response for creating Matrix webhook
 func MatrixHooksNewPost(ctx *context.Context) {
+       createWebhook(ctx, matrixHookParams(ctx))
+}
+
+// MatrixHooksEditPost response for editing Matrix webhook
+func MatrixHooksEditPost(ctx *context.Context) {
+       editWebhook(ctx, matrixHookParams(ctx))
+}
+
+func matrixHookParams(ctx *context.Context) webhookParams {
        form := web.GetForm(ctx).(*forms.NewMatrixHookForm)
 
-       createWebhook(ctx, webhookCreationParams{
+       return webhookParams{
+               Type:        webhook.MATRIX,
                URL:         fmt.Sprintf("%s/_matrix/client/r0/rooms/%s/send/m.room.message", form.HomeserverURL, url.PathEscape(form.RoomID)),
                ContentType: webhook.ContentTypeJSON,
                HTTPMethod:  http.MethodPut,
                WebhookForm: form.WebhookForm,
-               Type:        webhook.MATRIX,
                Meta: &webhook_service.MatrixMeta{
                        HomeserverURL: form.HomeserverURL,
                        Room:          form.RoomID,
                        AccessToken:   form.AccessToken,
                        MessageType:   form.MessageType,
                },
-       })
+       }
 }
 
-// MSTeamsHooksNewPost response for creating MS Teams hook
+// MSTeamsHooksNewPost response for creating MSTeams webhook
 func MSTeamsHooksNewPost(ctx *context.Context) {
+       createWebhook(ctx, mSTeamsHookParams(ctx))
+}
+
+// MSTeamsHooksEditPost response for editing MSTeams webhook
+func MSTeamsHooksEditPost(ctx *context.Context) {
+       editWebhook(ctx, mSTeamsHookParams(ctx))
+}
+
+func mSTeamsHookParams(ctx *context.Context) webhookParams {
        form := web.GetForm(ctx).(*forms.NewMSTeamsHookForm)
 
-       createWebhook(ctx, webhookCreationParams{
+       return webhookParams{
+               Type:        webhook.MSTEAMS,
                URL:         form.PayloadURL,
                ContentType: webhook.ContentTypeJSON,
                WebhookForm: form.WebhookForm,
-               Type:        webhook.MSTEAMS,
-       })
+       }
 }
 
-// SlackHooksNewPost response for creating slack hook
+// SlackHooksNewPost response for creating Slack webhook
 func SlackHooksNewPost(ctx *context.Context) {
+       createWebhook(ctx, slackHookParams(ctx))
+}
+
+// SlackHooksEditPost response for editing Slack webhook
+func SlackHooksEditPost(ctx *context.Context) {
+       editWebhook(ctx, slackHookParams(ctx))
+}
+
+func slackHookParams(ctx *context.Context) webhookParams {
        form := web.GetForm(ctx).(*forms.NewSlackHookForm)
 
-       createWebhook(ctx, webhookCreationParams{
+       return webhookParams{
+               Type:        webhook.SLACK,
                URL:         form.PayloadURL,
                ContentType: webhook.ContentTypeJSON,
                WebhookForm: form.WebhookForm,
-               Type:        webhook.SLACK,
                Meta: &webhook_service.SlackMeta{
                        Channel:  strings.TrimSpace(form.Channel),
                        Username: form.Username,
                        IconURL:  form.IconURL,
                        Color:    form.Color,
                },
-       })
+       }
 }
 
-// FeishuHooksNewPost response for creating feishu hook
+// 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)
 
-       createWebhook(ctx, webhookCreationParams{
+       return webhookParams{
+               Type:        webhook.FEISHU,
                URL:         form.PayloadURL,
                ContentType: webhook.ContentTypeJSON,
                WebhookForm: form.WebhookForm,
-               Type:        webhook.FEISHU,
-       })
+       }
 }
 
-// WechatworkHooksNewPost response for creating wechatwork hook
+// WechatworkHooksNewPost response for creating Wechatwork webhook
 func WechatworkHooksNewPost(ctx *context.Context) {
+       createWebhook(ctx, wechatworkHookParams(ctx))
+}
+
+// WechatworkHooksEditPost response for editing Wechatwork webhook
+func WechatworkHooksEditPost(ctx *context.Context) {
+       editWebhook(ctx, wechatworkHookParams(ctx))
+}
+
+func wechatworkHookParams(ctx *context.Context) webhookParams {
        form := web.GetForm(ctx).(*forms.NewWechatWorkHookForm)
 
-       createWebhook(ctx, webhookCreationParams{
+       return webhookParams{
+               Type:        webhook.WECHATWORK,
                URL:         form.PayloadURL,
                ContentType: webhook.ContentTypeJSON,
                WebhookForm: form.WebhookForm,
-               Type:        webhook.WECHATWORK,
-       })
+       }
 }
 
-// PackagistHooksNewPost response for creating packagist hook
+// PackagistHooksNewPost response for creating Packagist webhook
 func PackagistHooksNewPost(ctx *context.Context) {
+       createWebhook(ctx, packagistHookParams(ctx))
+}
+
+// PackagistHooksEditPost response for editing Packagist webhook
+func PackagistHooksEditPost(ctx *context.Context) {
+       editWebhook(ctx, packagistHookParams(ctx))
+}
+
+func packagistHookParams(ctx *context.Context) webhookParams {
        form := web.GetForm(ctx).(*forms.NewPackagistHookForm)
 
-       createWebhook(ctx, webhookCreationParams{
+       return webhookParams{
+               Type:        webhook.PACKAGIST,
                URL:         fmt.Sprintf("https://packagist.org/api/update-package?username=%s&apiToken=%s", url.QueryEscape(form.Username), url.QueryEscape(form.APIToken)),
                ContentType: webhook.ContentTypeJSON,
                WebhookForm: form.WebhookForm,
-               Type:        webhook.PACKAGIST,
                Meta: &webhook_service.PackagistMeta{
                        Username:   form.Username,
                        APIToken:   form.APIToken,
                        PackageURL: form.PackageURL,
                },
-       })
+       }
 }
 
 func checkWebhook(ctx *context.Context) (*orgRepoCtx, *webhook.Webhook) {
@@ -480,438 +627,6 @@ func WebHooksEdit(ctx *context.Context) {
        ctx.HTML(http.StatusOK, orCtx.NewTemplate)
 }
 
-// WebHooksEditPost response for editing web hook
-func WebHooksEditPost(ctx *context.Context) {
-       form := web.GetForm(ctx).(*forms.NewWebhookForm)
-       ctx.Data["Title"] = ctx.Tr("repo.settings.update_webhook")
-       ctx.Data["PageIsSettingsHooks"] = true
-       ctx.Data["PageIsSettingsHooksEdit"] = true
-
-       orCtx, w := checkWebhook(ctx)
-       if ctx.Written() {
-               return
-       }
-       ctx.Data["Webhook"] = w
-
-       if ctx.HasError() {
-               ctx.HTML(http.StatusOK, orCtx.NewTemplate)
-               return
-       }
-
-       contentType := webhook.ContentTypeJSON
-       if webhook.HookContentType(form.ContentType) == webhook.ContentTypeForm {
-               contentType = webhook.ContentTypeForm
-       }
-
-       w.URL = form.PayloadURL
-       w.ContentType = contentType
-       w.Secret = form.Secret
-       w.HookEvent = ParseHookEvent(form.WebhookForm)
-       w.IsActive = form.Active
-       w.HTTPMethod = form.HTTPMethod
-       if err := w.UpdateEvent(); err != nil {
-               ctx.ServerError("UpdateEvent", err)
-               return
-       } else if err := webhook.UpdateWebhook(w); err != nil {
-               ctx.ServerError("WebHooksEditPost", err)
-               return
-       }
-
-       ctx.Flash.Success(ctx.Tr("repo.settings.update_hook_success"))
-       ctx.Redirect(fmt.Sprintf("%s/%d", orCtx.Link, w.ID))
-}
-
-// GogsHooksEditPost response for editing gogs hook
-func GogsHooksEditPost(ctx *context.Context) {
-       form := web.GetForm(ctx).(*forms.NewGogshookForm)
-       ctx.Data["Title"] = ctx.Tr("repo.settings.update_webhook")
-       ctx.Data["PageIsSettingsHooks"] = true
-       ctx.Data["PageIsSettingsHooksEdit"] = true
-
-       orCtx, w := checkWebhook(ctx)
-       if ctx.Written() {
-               return
-       }
-       ctx.Data["Webhook"] = w
-
-       if ctx.HasError() {
-               ctx.HTML(http.StatusOK, orCtx.NewTemplate)
-               return
-       }
-
-       contentType := webhook.ContentTypeJSON
-       if webhook.HookContentType(form.ContentType) == webhook.ContentTypeForm {
-               contentType = webhook.ContentTypeForm
-       }
-
-       w.URL = form.PayloadURL
-       w.ContentType = contentType
-       w.Secret = form.Secret
-       w.HookEvent = ParseHookEvent(form.WebhookForm)
-       w.IsActive = form.Active
-       if err := w.UpdateEvent(); err != nil {
-               ctx.ServerError("UpdateEvent", err)
-               return
-       } else if err := webhook.UpdateWebhook(w); err != nil {
-               ctx.ServerError("GogsHooksEditPost", err)
-               return
-       }
-
-       ctx.Flash.Success(ctx.Tr("repo.settings.update_hook_success"))
-       ctx.Redirect(fmt.Sprintf("%s/%d", orCtx.Link, w.ID))
-}
-
-// SlackHooksEditPost response for editing slack hook
-func SlackHooksEditPost(ctx *context.Context) {
-       form := web.GetForm(ctx).(*forms.NewSlackHookForm)
-       ctx.Data["Title"] = ctx.Tr("repo.settings")
-       ctx.Data["PageIsSettingsHooks"] = true
-       ctx.Data["PageIsSettingsHooksEdit"] = true
-
-       orCtx, w := checkWebhook(ctx)
-       if ctx.Written() {
-               return
-       }
-       ctx.Data["Webhook"] = w
-
-       if ctx.HasError() {
-               ctx.HTML(http.StatusOK, orCtx.NewTemplate)
-               return
-       }
-
-       meta, err := json.Marshal(&webhook_service.SlackMeta{
-               Channel:  strings.TrimSpace(form.Channel),
-               Username: form.Username,
-               IconURL:  form.IconURL,
-               Color:    form.Color,
-       })
-       if err != nil {
-               ctx.ServerError("Marshal", err)
-               return
-       }
-
-       w.URL = form.PayloadURL
-       w.Meta = string(meta)
-       w.HookEvent = ParseHookEvent(form.WebhookForm)
-       w.IsActive = form.Active
-       if err := w.UpdateEvent(); err != nil {
-               ctx.ServerError("UpdateEvent", err)
-               return
-       } else if err := webhook.UpdateWebhook(w); err != nil {
-               ctx.ServerError("UpdateWebhook", err)
-               return
-       }
-
-       ctx.Flash.Success(ctx.Tr("repo.settings.update_hook_success"))
-       ctx.Redirect(fmt.Sprintf("%s/%d", orCtx.Link, w.ID))
-}
-
-// DiscordHooksEditPost response for editing discord hook
-func DiscordHooksEditPost(ctx *context.Context) {
-       form := web.GetForm(ctx).(*forms.NewDiscordHookForm)
-       ctx.Data["Title"] = ctx.Tr("repo.settings")
-       ctx.Data["PageIsSettingsHooks"] = true
-       ctx.Data["PageIsSettingsHooksEdit"] = true
-
-       orCtx, w := checkWebhook(ctx)
-       if ctx.Written() {
-               return
-       }
-       ctx.Data["Webhook"] = w
-
-       if ctx.HasError() {
-               ctx.HTML(http.StatusOK, orCtx.NewTemplate)
-               return
-       }
-
-       meta, err := json.Marshal(&webhook_service.DiscordMeta{
-               Username: form.Username,
-               IconURL:  form.IconURL,
-       })
-       if err != nil {
-               ctx.ServerError("Marshal", err)
-               return
-       }
-
-       w.URL = form.PayloadURL
-       w.Meta = string(meta)
-       w.HookEvent = ParseHookEvent(form.WebhookForm)
-       w.IsActive = form.Active
-       if err := w.UpdateEvent(); err != nil {
-               ctx.ServerError("UpdateEvent", err)
-               return
-       } else if err := webhook.UpdateWebhook(w); err != nil {
-               ctx.ServerError("UpdateWebhook", err)
-               return
-       }
-
-       ctx.Flash.Success(ctx.Tr("repo.settings.update_hook_success"))
-       ctx.Redirect(fmt.Sprintf("%s/%d", orCtx.Link, w.ID))
-}
-
-// DingtalkHooksEditPost response for editing discord hook
-func DingtalkHooksEditPost(ctx *context.Context) {
-       form := web.GetForm(ctx).(*forms.NewDingtalkHookForm)
-       ctx.Data["Title"] = ctx.Tr("repo.settings")
-       ctx.Data["PageIsSettingsHooks"] = true
-       ctx.Data["PageIsSettingsHooksEdit"] = true
-
-       orCtx, w := checkWebhook(ctx)
-       if ctx.Written() {
-               return
-       }
-       ctx.Data["Webhook"] = w
-
-       if ctx.HasError() {
-               ctx.HTML(http.StatusOK, orCtx.NewTemplate)
-               return
-       }
-
-       w.URL = form.PayloadURL
-       w.HookEvent = ParseHookEvent(form.WebhookForm)
-       w.IsActive = form.Active
-       if err := w.UpdateEvent(); err != nil {
-               ctx.ServerError("UpdateEvent", err)
-               return
-       } else if err := webhook.UpdateWebhook(w); err != nil {
-               ctx.ServerError("UpdateWebhook", err)
-               return
-       }
-
-       ctx.Flash.Success(ctx.Tr("repo.settings.update_hook_success"))
-       ctx.Redirect(fmt.Sprintf("%s/%d", orCtx.Link, w.ID))
-}
-
-// TelegramHooksEditPost response for editing discord hook
-func TelegramHooksEditPost(ctx *context.Context) {
-       form := web.GetForm(ctx).(*forms.NewTelegramHookForm)
-       ctx.Data["Title"] = ctx.Tr("repo.settings")
-       ctx.Data["PageIsSettingsHooks"] = true
-       ctx.Data["PageIsSettingsHooksEdit"] = true
-
-       orCtx, w := checkWebhook(ctx)
-       if ctx.Written() {
-               return
-       }
-       ctx.Data["Webhook"] = w
-
-       if ctx.HasError() {
-               ctx.HTML(http.StatusOK, orCtx.NewTemplate)
-               return
-       }
-
-       meta, err := json.Marshal(&webhook_service.TelegramMeta{
-               BotToken: form.BotToken,
-               ChatID:   form.ChatID,
-       })
-       if err != nil {
-               ctx.ServerError("Marshal", err)
-               return
-       }
-       w.Meta = string(meta)
-       w.URL = fmt.Sprintf("https://api.telegram.org/bot%s/sendMessage?chat_id=%s", url.PathEscape(form.BotToken), url.QueryEscape(form.ChatID))
-       w.HookEvent = ParseHookEvent(form.WebhookForm)
-       w.IsActive = form.Active
-       if err := w.UpdateEvent(); err != nil {
-               ctx.ServerError("UpdateEvent", err)
-               return
-       } else if err := webhook.UpdateWebhook(w); err != nil {
-               ctx.ServerError("UpdateWebhook", err)
-               return
-       }
-
-       ctx.Flash.Success(ctx.Tr("repo.settings.update_hook_success"))
-       ctx.Redirect(fmt.Sprintf("%s/%d", orCtx.Link, w.ID))
-}
-
-// MatrixHooksEditPost response for editing a Matrix hook
-func MatrixHooksEditPost(ctx *context.Context) {
-       form := web.GetForm(ctx).(*forms.NewMatrixHookForm)
-       ctx.Data["Title"] = ctx.Tr("repo.settings")
-       ctx.Data["PageIsSettingsHooks"] = true
-       ctx.Data["PageIsSettingsHooksEdit"] = true
-
-       orCtx, w := checkWebhook(ctx)
-       if ctx.Written() {
-               return
-       }
-       ctx.Data["Webhook"] = w
-
-       if ctx.HasError() {
-               ctx.HTML(http.StatusOK, orCtx.NewTemplate)
-               return
-       }
-
-       meta, err := json.Marshal(&webhook_service.MatrixMeta{
-               HomeserverURL: form.HomeserverURL,
-               Room:          form.RoomID,
-               AccessToken:   form.AccessToken,
-               MessageType:   form.MessageType,
-       })
-       if err != nil {
-               ctx.ServerError("Marshal", err)
-               return
-       }
-       w.Meta = string(meta)
-       w.URL = fmt.Sprintf("%s/_matrix/client/r0/rooms/%s/send/m.room.message", form.HomeserverURL, url.PathEscape(form.RoomID))
-
-       w.HookEvent = ParseHookEvent(form.WebhookForm)
-       w.IsActive = form.Active
-       if err := w.UpdateEvent(); err != nil {
-               ctx.ServerError("UpdateEvent", err)
-               return
-       } else if err := webhook.UpdateWebhook(w); err != nil {
-               ctx.ServerError("UpdateWebhook", err)
-               return
-       }
-
-       ctx.Flash.Success(ctx.Tr("repo.settings.update_hook_success"))
-       ctx.Redirect(fmt.Sprintf("%s/%d", orCtx.Link, w.ID))
-}
-
-// MSTeamsHooksEditPost response for editing MS Teams hook
-func MSTeamsHooksEditPost(ctx *context.Context) {
-       form := web.GetForm(ctx).(*forms.NewMSTeamsHookForm)
-       ctx.Data["Title"] = ctx.Tr("repo.settings")
-       ctx.Data["PageIsSettingsHooks"] = true
-       ctx.Data["PageIsSettingsHooksEdit"] = true
-
-       orCtx, w := checkWebhook(ctx)
-       if ctx.Written() {
-               return
-       }
-       ctx.Data["Webhook"] = w
-
-       if ctx.HasError() {
-               ctx.HTML(http.StatusOK, orCtx.NewTemplate)
-               return
-       }
-
-       w.URL = form.PayloadURL
-       w.HookEvent = ParseHookEvent(form.WebhookForm)
-       w.IsActive = form.Active
-       if err := w.UpdateEvent(); err != nil {
-               ctx.ServerError("UpdateEvent", err)
-               return
-       } else if err := webhook.UpdateWebhook(w); err != nil {
-               ctx.ServerError("UpdateWebhook", err)
-               return
-       }
-
-       ctx.Flash.Success(ctx.Tr("repo.settings.update_hook_success"))
-       ctx.Redirect(fmt.Sprintf("%s/%d", orCtx.Link, w.ID))
-}
-
-// FeishuHooksEditPost response for editing feishu hook
-func FeishuHooksEditPost(ctx *context.Context) {
-       form := web.GetForm(ctx).(*forms.NewFeishuHookForm)
-       ctx.Data["Title"] = ctx.Tr("repo.settings")
-       ctx.Data["PageIsSettingsHooks"] = true
-       ctx.Data["PageIsSettingsHooksEdit"] = true
-
-       orCtx, w := checkWebhook(ctx)
-       if ctx.Written() {
-               return
-       }
-       ctx.Data["Webhook"] = w
-
-       if ctx.HasError() {
-               ctx.HTML(http.StatusOK, orCtx.NewTemplate)
-               return
-       }
-
-       w.URL = form.PayloadURL
-       w.HookEvent = ParseHookEvent(form.WebhookForm)
-       w.IsActive = form.Active
-       if err := w.UpdateEvent(); err != nil {
-               ctx.ServerError("UpdateEvent", err)
-               return
-       } else if err := webhook.UpdateWebhook(w); err != nil {
-               ctx.ServerError("UpdateWebhook", err)
-               return
-       }
-
-       ctx.Flash.Success(ctx.Tr("repo.settings.update_hook_success"))
-       ctx.Redirect(fmt.Sprintf("%s/%d", orCtx.Link, w.ID))
-}
-
-// WechatworkHooksEditPost response for editing wechatwork hook
-func WechatworkHooksEditPost(ctx *context.Context) {
-       form := web.GetForm(ctx).(*forms.NewWechatWorkHookForm)
-       ctx.Data["Title"] = ctx.Tr("repo.settings")
-       ctx.Data["PageIsSettingsHooks"] = true
-       ctx.Data["PageIsSettingsHooksEdit"] = true
-
-       orCtx, w := checkWebhook(ctx)
-       if ctx.Written() {
-               return
-       }
-       ctx.Data["Webhook"] = w
-
-       if ctx.HasError() {
-               ctx.HTML(http.StatusOK, orCtx.NewTemplate)
-               return
-       }
-
-       w.URL = form.PayloadURL
-       w.HookEvent = ParseHookEvent(form.WebhookForm)
-       w.IsActive = form.Active
-       if err := w.UpdateEvent(); err != nil {
-               ctx.ServerError("UpdateEvent", err)
-               return
-       } else if err := webhook.UpdateWebhook(w); err != nil {
-               ctx.ServerError("UpdateWebhook", err)
-               return
-       }
-
-       ctx.Flash.Success(ctx.Tr("repo.settings.update_hook_success"))
-       ctx.Redirect(fmt.Sprintf("%s/%d", orCtx.Link, w.ID))
-}
-
-// PackagistHooksEditPost response for editing packagist hook
-func PackagistHooksEditPost(ctx *context.Context) {
-       form := web.GetForm(ctx).(*forms.NewPackagistHookForm)
-       ctx.Data["Title"] = ctx.Tr("repo.settings")
-       ctx.Data["PageIsSettingsHooks"] = true
-       ctx.Data["PageIsSettingsHooksEdit"] = true
-
-       orCtx, w := checkWebhook(ctx)
-       if ctx.Written() {
-               return
-       }
-       ctx.Data["Webhook"] = w
-
-       if ctx.HasError() {
-               ctx.HTML(http.StatusOK, orCtx.NewTemplate)
-               return
-       }
-
-       meta, err := json.Marshal(&webhook_service.PackagistMeta{
-               Username:   form.Username,
-               APIToken:   form.APIToken,
-               PackageURL: form.PackageURL,
-       })
-       if err != nil {
-               ctx.ServerError("Marshal", err)
-               return
-       }
-
-       w.Meta = string(meta)
-       w.URL = fmt.Sprintf("https://packagist.org/api/update-package?username=%s&apiToken=%s", url.QueryEscape(form.Username), url.QueryEscape(form.APIToken))
-       w.HookEvent = ParseHookEvent(form.WebhookForm)
-       w.IsActive = form.Active
-       if err := w.UpdateEvent(); err != nil {
-               ctx.ServerError("UpdateEvent", err)
-               return
-       } else if err := webhook.UpdateWebhook(w); err != nil {
-               ctx.ServerError("UpdateWebhook", err)
-               return
-       }
-
-       ctx.Flash.Success(ctx.Tr("repo.settings.update_hook_success"))
-       ctx.Redirect(fmt.Sprintf("%s/%d", orCtx.Link, w.ID))
-}
-
 // TestWebhook test if web hook is work fine
 func TestWebhook(ctx *context.Context) {
        hookID := ctx.ParamsInt64(":id")
index 34d3de6fde0a3be62de7ec013c9dcf9d6d5ce943..55bce161174727ee8d92358fad94725e6a635c34 100644 (file)
@@ -525,7 +525,7 @@ func RegisterRoutes(m *web.Route) {
                                m.Get("", repo.WebHooksEdit)
                                m.Post("/replay/{uuid}", repo.ReplayWebhook)
                        })
-                       m.Post("/gitea/{id}", bindIgnErr(forms.NewWebhookForm{}), repo.WebHooksEditPost)
+                       m.Post("/gitea/{id}", bindIgnErr(forms.NewWebhookForm{}), repo.GiteaHooksEditPost)
                        m.Post("/gogs/{id}", bindIgnErr(forms.NewGogshookForm{}), repo.GogsHooksEditPost)
                        m.Post("/slack/{id}", bindIgnErr(forms.NewSlackHookForm{}), repo.SlackHooksEditPost)
                        m.Post("/discord/{id}", bindIgnErr(forms.NewDiscordHookForm{}), repo.DiscordHooksEditPost)
@@ -678,7 +678,7 @@ func RegisterRoutes(m *web.Route) {
                                                m.Get("", repo.WebHooksEdit)
                                                m.Post("/replay/{uuid}", repo.ReplayWebhook)
                                        })
-                                       m.Post("/gitea/{id}", bindIgnErr(forms.NewWebhookForm{}), repo.WebHooksEditPost)
+                                       m.Post("/gitea/{id}", bindIgnErr(forms.NewWebhookForm{}), repo.GiteaHooksEditPost)
                                        m.Post("/gogs/{id}", bindIgnErr(forms.NewGogshookForm{}), repo.GogsHooksEditPost)
                                        m.Post("/slack/{id}", bindIgnErr(forms.NewSlackHookForm{}), repo.SlackHooksEditPost)
                                        m.Post("/discord/{id}", bindIgnErr(forms.NewDiscordHookForm{}), repo.DiscordHooksEditPost)
@@ -800,7 +800,7 @@ func RegisterRoutes(m *web.Route) {
                                        m.Post("/test", repo.TestWebhook)
                                        m.Post("/replay/{uuid}", repo.ReplayWebhook)
                                })
-                               m.Post("/gitea/{id}", bindIgnErr(forms.NewWebhookForm{}), repo.WebHooksEditPost)
+                               m.Post("/gitea/{id}", bindIgnErr(forms.NewWebhookForm{}), repo.GiteaHooksEditPost)
                                m.Post("/gogs/{id}", bindIgnErr(forms.NewGogshookForm{}), repo.GogsHooksEditPost)
                                m.Post("/slack/{id}", bindIgnErr(forms.NewSlackHookForm{}), repo.SlackHooksEditPost)
                                m.Post("/discord/{id}", bindIgnErr(forms.NewDiscordHookForm{}), repo.DiscordHooksEditPost)