diff options
author | Lunny Xiao <xiaolunwen@gmail.com> | 2017-08-29 22:55:24 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-08-29 22:55:24 +0800 |
commit | 3e6fed368bbd837854292d3855463d567a689943 (patch) | |
tree | dcdff5d6a9ab69f6bd41158ebfee615f208f9c64 /models/webhook.go | |
parent | 491f0ebc58854560f72a5360060dac1fee3f1883 (diff) | |
download | gitea-3e6fed368bbd837854292d3855463d567a689943.tar.gz gitea-3e6fed368bbd837854292d3855463d567a689943.zip |
fix webhook test (#2415)
* fix webhook test
* fix error message
* fix typo
Diffstat (limited to 'models/webhook.go')
-rw-r--r-- | models/webhook.go | 97 |
1 files changed, 53 insertions, 44 deletions
diff --git a/models/webhook.go b/models/webhook.go index 61840a9811..5ad27ee8f3 100644 --- a/models/webhook.go +++ b/models/webhook.go @@ -482,6 +482,57 @@ func UpdateHookTask(t *HookTask) error { return err } +// PrepareWebhook adds special webhook to task queue for given payload. +func PrepareWebhook(w *Webhook, repo *Repository, event HookEventType, p api.Payloader) error { + switch event { + case HookEventCreate: + if !w.HasCreateEvent() { + return nil + } + case HookEventPush: + if !w.HasPushEvent() { + return nil + } + case HookEventPullRequest: + if !w.HasPullRequestEvent() { + return nil + } + } + + var payloader api.Payloader + var err error + // Use separate objects so modifications won't be made on payload on non-Gogs/Gitea type hooks. + switch w.HookTaskType { + case SLACK: + payloader, err = GetSlackPayload(p, event, w.Meta) + if err != nil { + return fmt.Errorf("GetSlackPayload: %v", err) + } + case DISCORD: + payloader, err = GetDiscordPayload(p, event, w.Meta) + if err != nil { + return fmt.Errorf("GetDiscordPayload: %v", err) + } + default: + p.SetSecret(w.Secret) + payloader = p + } + + if err = CreateHookTask(&HookTask{ + RepoID: repo.ID, + HookID: w.ID, + Type: w.HookTaskType, + URL: w.URL, + Payloader: payloader, + ContentType: w.ContentType, + EventType: event, + IsSSL: w.IsSSL, + }); err != nil { + return fmt.Errorf("CreateHookTask: %v", err) + } + return nil +} + // PrepareWebhooks adds new webhooks to task queue for given payload. func PrepareWebhooks(repo *Repository, event HookEventType, p api.Payloader) error { ws, err := GetActiveWebhooksByRepoID(repo.ID) @@ -503,51 +554,9 @@ func PrepareWebhooks(repo *Repository, event HookEventType, p api.Payloader) err return nil } - var payloader api.Payloader for _, w := range ws { - switch event { - case HookEventCreate: - if !w.HasCreateEvent() { - continue - } - case HookEventPush: - if !w.HasPushEvent() { - continue - } - case HookEventPullRequest: - if !w.HasPullRequestEvent() { - continue - } - } - - // Use separate objects so modifications won't be made on payload on non-Gogs/Gitea type hooks. - switch w.HookTaskType { - case SLACK: - payloader, err = GetSlackPayload(p, event, w.Meta) - if err != nil { - return fmt.Errorf("GetSlackPayload: %v", err) - } - case DISCORD: - payloader, err = GetDiscordPayload(p, event, w.Meta) - if err != nil { - return fmt.Errorf("GetDiscordPayload: %v", err) - } - default: - p.SetSecret(w.Secret) - payloader = p - } - - if err = CreateHookTask(&HookTask{ - RepoID: repo.ID, - HookID: w.ID, - Type: w.HookTaskType, - URL: w.URL, - Payloader: payloader, - ContentType: w.ContentType, - EventType: event, - IsSSL: w.IsSSL, - }); err != nil { - return fmt.Errorf("CreateHookTask: %v", err) + if err = PrepareWebhook(w, repo, event, p); err != nil { + return err } } return nil |