|
|
@ -1,4 +1,5 @@ |
|
|
|
// Copyright 2015 The Gogs Authors. All rights reserved.
|
|
|
|
// Copyright 2015 The Gogs Authors. All rights reserved.
|
|
|
|
|
|
|
|
// Copyright 2017 The Gitea Authors. All rights reserved.
|
|
|
|
// Use of this source code is governed by a MIT-style
|
|
|
|
// Use of this source code is governed by a MIT-style
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// license that can be found in the LICENSE file.
|
|
|
|
|
|
|
|
|
|
|
@ -120,6 +121,53 @@ func ParseHookEvent(form auth.WebhookForm) *models.HookEvent { |
|
|
|
|
|
|
|
|
|
|
|
// WebHooksNewPost response for creating webhook
|
|
|
|
// WebHooksNewPost response for creating webhook
|
|
|
|
func WebHooksNewPost(ctx *context.Context, form auth.NewWebhookForm) { |
|
|
|
func WebHooksNewPost(ctx *context.Context, form auth.NewWebhookForm) { |
|
|
|
|
|
|
|
ctx.Data["Title"] = ctx.Tr("repo.settings.add_webhook") |
|
|
|
|
|
|
|
ctx.Data["PageIsSettingsHooks"] = true |
|
|
|
|
|
|
|
ctx.Data["PageIsSettingsHooksNew"] = true |
|
|
|
|
|
|
|
ctx.Data["Webhook"] = models.Webhook{HookEvent: &models.HookEvent{}} |
|
|
|
|
|
|
|
ctx.Data["HookType"] = "gitea" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
orCtx, err := getOrgRepoCtx(ctx) |
|
|
|
|
|
|
|
if err != nil { |
|
|
|
|
|
|
|
ctx.Handle(500, "getOrgRepoCtx", err) |
|
|
|
|
|
|
|
return |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
ctx.Data["BaseLink"] = orCtx.Link |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if ctx.HasError() { |
|
|
|
|
|
|
|
ctx.HTML(200, orCtx.NewTemplate) |
|
|
|
|
|
|
|
return |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
contentType := models.ContentTypeJSON |
|
|
|
|
|
|
|
if models.HookContentType(form.ContentType) == models.ContentTypeForm { |
|
|
|
|
|
|
|
contentType = models.ContentTypeForm |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
w := &models.Webhook{ |
|
|
|
|
|
|
|
RepoID: orCtx.RepoID, |
|
|
|
|
|
|
|
URL: form.PayloadURL, |
|
|
|
|
|
|
|
ContentType: contentType, |
|
|
|
|
|
|
|
Secret: form.Secret, |
|
|
|
|
|
|
|
HookEvent: ParseHookEvent(form.WebhookForm), |
|
|
|
|
|
|
|
IsActive: form.Active, |
|
|
|
|
|
|
|
HookTaskType: models.GITEA, |
|
|
|
|
|
|
|
OrgID: orCtx.OrgID, |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
if err := w.UpdateEvent(); err != nil { |
|
|
|
|
|
|
|
ctx.Handle(500, "UpdateEvent", err) |
|
|
|
|
|
|
|
return |
|
|
|
|
|
|
|
} else if err := models.CreateWebhook(w); err != nil { |
|
|
|
|
|
|
|
ctx.Handle(500, "CreateWebhook", err) |
|
|
|
|
|
|
|
return |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ctx.Flash.Success(ctx.Tr("repo.settings.add_hook_success")) |
|
|
|
|
|
|
|
ctx.Redirect(orCtx.Link + "/settings/hooks") |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// GogsHooksNewPost response for creating webhook
|
|
|
|
|
|
|
|
func GogsHooksNewPost(ctx *context.Context, form auth.NewWebhookForm) { |
|
|
|
ctx.Data["Title"] = ctx.Tr("repo.settings.add_webhook") |
|
|
|
ctx.Data["Title"] = ctx.Tr("repo.settings.add_webhook") |
|
|
|
ctx.Data["PageIsSettingsHooks"] = true |
|
|
|
ctx.Data["PageIsSettingsHooks"] = true |
|
|
|
ctx.Data["PageIsSettingsHooksNew"] = true |
|
|
|
ctx.Data["PageIsSettingsHooksNew"] = true |
|
|
@ -150,7 +198,7 @@ func WebHooksNewPost(ctx *context.Context, form auth.NewWebhookForm) { |
|
|
|
Secret: form.Secret, |
|
|
|
Secret: form.Secret, |
|
|
|
HookEvent: ParseHookEvent(form.WebhookForm), |
|
|
|
HookEvent: ParseHookEvent(form.WebhookForm), |
|
|
|
IsActive: form.Active, |
|
|
|
IsActive: form.Active, |
|
|
|
HookTaskType: models.GOGS, |
|
|
|
HookTaskType: models.GITEA, |
|
|
|
OrgID: orCtx.OrgID, |
|
|
|
OrgID: orCtx.OrgID, |
|
|
|
} |
|
|
|
} |
|
|
|
if err := w.UpdateEvent(); err != nil { |
|
|
|
if err := w.UpdateEvent(); err != nil { |
|
|
@ -245,8 +293,10 @@ func checkWebhook(ctx *context.Context) (*orgRepoCtx, *models.Webhook) { |
|
|
|
case models.SLACK: |
|
|
|
case models.SLACK: |
|
|
|
ctx.Data["SlackHook"] = w.GetSlackHook() |
|
|
|
ctx.Data["SlackHook"] = w.GetSlackHook() |
|
|
|
ctx.Data["HookType"] = "slack" |
|
|
|
ctx.Data["HookType"] = "slack" |
|
|
|
default: |
|
|
|
case models.GOGS: |
|
|
|
ctx.Data["HookType"] = "gogs" |
|
|
|
ctx.Data["HookType"] = "gogs" |
|
|
|
|
|
|
|
default: |
|
|
|
|
|
|
|
ctx.Data["HookType"] = "gitea" |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
ctx.Data["History"], err = w.History(1) |
|
|
|
ctx.Data["History"], err = w.History(1) |
|
|
@ -310,6 +360,45 @@ func WebHooksEditPost(ctx *context.Context, form auth.NewWebhookForm) { |
|
|
|
ctx.Redirect(fmt.Sprintf("%s/settings/hooks/%d", orCtx.Link, w.ID)) |
|
|
|
ctx.Redirect(fmt.Sprintf("%s/settings/hooks/%d", orCtx.Link, w.ID)) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// GogsHooksEditPost response for editing gogs hook
|
|
|
|
|
|
|
|
func GogsHooksEditPost(ctx *context.Context, form auth.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(200, orCtx.NewTemplate) |
|
|
|
|
|
|
|
return |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
contentType := models.ContentTypeJSON |
|
|
|
|
|
|
|
if models.HookContentType(form.ContentType) == models.ContentTypeForm { |
|
|
|
|
|
|
|
contentType = models.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.Handle(500, "UpdateEvent", err) |
|
|
|
|
|
|
|
return |
|
|
|
|
|
|
|
} else if err := models.UpdateWebhook(w); err != nil { |
|
|
|
|
|
|
|
ctx.Handle(500, "GogsHooksEditPost", err) |
|
|
|
|
|
|
|
return |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ctx.Flash.Success(ctx.Tr("repo.settings.update_hook_success")) |
|
|
|
|
|
|
|
ctx.Redirect(fmt.Sprintf("%s/settings/hooks/%d", orCtx.Link, w.ID)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// SlackHooksEditPost response for editing slack hook
|
|
|
|
// SlackHooksEditPost response for editing slack hook
|
|
|
|
func SlackHooksEditPost(ctx *context.Context, form auth.NewSlackHookForm) { |
|
|
|
func SlackHooksEditPost(ctx *context.Context, form auth.NewSlackHookForm) { |
|
|
|
ctx.Data["Title"] = ctx.Tr("repo.settings") |
|
|
|
ctx.Data["Title"] = ctx.Tr("repo.settings") |
|
|
|