prepareHookTasks adds list of webhooks to task queue.
(e Engine, repo *Repository, event HookEventType, p api.Payloader, webhooks []*Webhook)
| 561 | |
| 562 | // prepareHookTasks adds list of webhooks to task queue. |
| 563 | func prepareHookTasks(e Engine, repo *Repository, event HookEventType, p api.Payloader, webhooks []*Webhook) (err error) { |
| 564 | if len(webhooks) == 0 { |
| 565 | return nil |
| 566 | } |
| 567 | |
| 568 | var payloader api.Payloader |
| 569 | for _, w := range webhooks { |
| 570 | switch event { |
| 571 | case HookEventTypeCreate: |
| 572 | if !w.HasCreateEvent() { |
| 573 | continue |
| 574 | } |
| 575 | case HookEventTypeDelete: |
| 576 | if !w.HasDeleteEvent() { |
| 577 | continue |
| 578 | } |
| 579 | case HookEventTypeFork: |
| 580 | if !w.HasForkEvent() { |
| 581 | continue |
| 582 | } |
| 583 | case HookEventTypePush: |
| 584 | if !w.HasPushEvent() { |
| 585 | continue |
| 586 | } |
| 587 | case HookEventTypeIssues: |
| 588 | if !w.HasIssuesEvent() { |
| 589 | continue |
| 590 | } |
| 591 | case HookEventTypePullRequest: |
| 592 | if !w.HasPullRequestEvent() { |
| 593 | continue |
| 594 | } |
| 595 | case HookEventTypeIssueComment: |
| 596 | if !w.HasIssueCommentEvent() { |
| 597 | continue |
| 598 | } |
| 599 | case HookEventTypeRelease: |
| 600 | if !w.HasReleaseEvent() { |
| 601 | continue |
| 602 | } |
| 603 | } |
| 604 | |
| 605 | // Use separate objects so modifications won't be made on payload on non-Gogs type hooks. |
| 606 | switch w.HookTaskType { |
| 607 | case SLACK: |
| 608 | payloader, err = GetSlackPayload(p, event, w.Meta) |
| 609 | if err != nil { |
| 610 | return errors.Newf("GetSlackPayload: %v", err) |
| 611 | } |
| 612 | case DISCORD: |
| 613 | payloader, err = GetDiscordPayload(p, event, w.Meta) |
| 614 | if err != nil { |
| 615 | return errors.Newf("GetDiscordPayload: %v", err) |
| 616 | } |
| 617 | case DINGTALK: |
| 618 | payloader, err = GetDingtalkPayload(p, event) |
| 619 | if err != nil { |
| 620 | return errors.Newf("GetDingtalkPayload: %v", err) |