MCPcopy Create free account
hub / github.com/gogs/gogs / prepareHookTasks

Function prepareHookTasks

internal/database/webhook.go:563–657  ·  view source on GitHub ↗

prepareHookTasks adds list of webhooks to task queue.

(e Engine, repo *Repository, event HookEventType, p api.Payloader, webhooks []*Webhook)

Source from the content-addressed store, hash-verified

561
562// prepareHookTasks adds list of webhooks to task queue.
563func 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)

Callers 2

prepareWebhooksFunction · 0.85
TestWebhookFunction · 0.85

Calls 15

GetSlackPayloadFunction · 0.85
GetDiscordPayloadFunction · 0.85
GetDingtalkPayloadFunction · 0.85
createHookTaskFunction · 0.85
HasCreateEventMethod · 0.80
HasDeleteEventMethod · 0.80
HasForkEventMethod · 0.80
HasPushEventMethod · 0.80
HasIssuesEventMethod · 0.80
HasPullRequestEventMethod · 0.80
HasIssueCommentEventMethod · 0.80
HasReleaseEventMethod · 0.80

Tested by 1

TestWebhookFunction · 0.68