[REFACTOR] webhook discord endpoint
This commit is contained in:
		
							parent
							
								
									6f00821f3d
								
							
						
					
					
						commit
						c3f8e6ed60
					
				
					 4 changed files with 20 additions and 42 deletions
				
			
		| 
						 | 
				
			
			@ -388,31 +388,6 @@ func gogsHookParams(ctx *context.Context) webhookParams {
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// 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)
 | 
			
		||||
 | 
			
		||||
	return webhookParams{
 | 
			
		||||
		Type:        webhook_module.DISCORD,
 | 
			
		||||
		URL:         form.PayloadURL,
 | 
			
		||||
		ContentType: webhook.ContentTypeJSON,
 | 
			
		||||
		WebhookForm: form.WebhookForm,
 | 
			
		||||
		Meta: &webhook_service.DiscordMeta{
 | 
			
		||||
			Username: form.Username,
 | 
			
		||||
			IconURL:  form.IconURL,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// DingtalkHooksNewPost response for creating Dingtalk webhook
 | 
			
		||||
func DingtalkHooksNewPost(ctx *context.Context) {
 | 
			
		||||
	createWebhook(ctx, dingtalkHookParams(ctx))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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("/discord/new", web.Bind(forms.NewDiscordHookForm{}), repo_setting.DiscordHooksNewPost)
 | 
			
		||||
		m.Post("/dingtalk/new", web.Bind(forms.NewDingtalkHookForm{}), repo_setting.DingtalkHooksNewPost)
 | 
			
		||||
		m.Post("/telegram/new", web.Bind(forms.NewTelegramHookForm{}), repo_setting.TelegramHooksNewPost)
 | 
			
		||||
		m.Post("/msteams/new", web.Bind(forms.NewMSTeamsHookForm{}), repo_setting.MSTeamsHooksNewPost)
 | 
			
		||||
| 
						 | 
				
			
			@ -415,7 +414,6 @@ func registerRoutes(m *web.Route) {
 | 
			
		|||
 | 
			
		||||
	addWebhookEditRoutes := func() {
 | 
			
		||||
		m.Post("/gogs/{id}", web.Bind(forms.NewGogshookForm{}), repo_setting.GogsHooksEditPost)
 | 
			
		||||
		m.Post("/discord/{id}", web.Bind(forms.NewDiscordHookForm{}), repo_setting.DiscordHooksEditPost)
 | 
			
		||||
		m.Post("/dingtalk/{id}", web.Bind(forms.NewDingtalkHookForm{}), repo_setting.DingtalkHooksEditPost)
 | 
			
		||||
		m.Post("/telegram/{id}", web.Bind(forms.NewTelegramHookForm{}), repo_setting.TelegramHooksEditPost)
 | 
			
		||||
		m.Post("/msteams/{id}", web.Bind(forms.NewMSTeamsHookForm{}), repo_setting.MSTeamsHooksEditPost)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -292,20 +292,6 @@ func (f *NewGogshookForm) Validate(req *http.Request, errs binding.Errors) bindi
 | 
			
		|||
	return middleware.Validate(errs, ctx.Data, f, ctx.Locale)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewDiscordHookForm form for creating discord hook
 | 
			
		||||
type NewDiscordHookForm struct {
 | 
			
		||||
	PayloadURL string `binding:"Required;ValidUrl"`
 | 
			
		||||
	Username   string
 | 
			
		||||
	IconURL    string
 | 
			
		||||
	WebhookForm
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Validate validates the fields
 | 
			
		||||
func (f *NewDiscordHookForm) Validate(req *http.Request, errs binding.Errors) binding.Errors {
 | 
			
		||||
	ctx := context.GetValidateContext(req)
 | 
			
		||||
	return middleware.Validate(errs, ctx.Data, f, ctx.Locale)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// NewDingtalkHookForm form for creating dingtalk hook
 | 
			
		||||
type NewDingtalkHookForm struct {
 | 
			
		||||
	PayloadURL string `binding:"Required;ValidUrl"`
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,6 +20,7 @@ import (
 | 
			
		|||
	api "code.gitea.io/gitea/modules/structs"
 | 
			
		||||
	"code.gitea.io/gitea/modules/util"
 | 
			
		||||
	webhook_module "code.gitea.io/gitea/modules/webhook"
 | 
			
		||||
	"code.gitea.io/gitea/services/forms"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type discordHandler struct{}
 | 
			
		||||
| 
						 | 
				
			
			@ -27,7 +28,25 @@ type discordHandler struct{}
 | 
			
		|||
func (discordHandler) Type() webhook_module.HookType { return webhook_module.DISCORD }
 | 
			
		||||
 | 
			
		||||
func (discordHandler) FormFields(bind func(any)) FormFields {
 | 
			
		||||
	panic("TODO")
 | 
			
		||||
	var form struct {
 | 
			
		||||
		forms.WebhookForm
 | 
			
		||||
		PayloadURL string `binding:"Required;ValidUrl"`
 | 
			
		||||
		Username   string
 | 
			
		||||
		IconURL    string
 | 
			
		||||
	}
 | 
			
		||||
	bind(&form)
 | 
			
		||||
 | 
			
		||||
	return FormFields{
 | 
			
		||||
		WebhookForm: form.WebhookForm,
 | 
			
		||||
		URL:         form.PayloadURL,
 | 
			
		||||
		ContentType: webhook_model.ContentTypeJSON,
 | 
			
		||||
		Secret:      "",
 | 
			
		||||
		HTTPMethod:  http.MethodPost,
 | 
			
		||||
		Metadata: &DiscordMeta{
 | 
			
		||||
			Username: form.Username,
 | 
			
		||||
			IconURL:  form.IconURL,
 | 
			
		||||
		},
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type (
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue