summaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorJohn Olheiser <john.olheiser@gmail.com>2020-03-05 23:10:48 -0600
committerGitHub <noreply@github.com>2020-03-06 07:10:48 +0200
commit3f1c0841cb9fc61136b85c6b39613679d2851707 (patch)
treed0b15f3b809891d83f41fed5ab7378765330525a /modules
parent80db44267ccb688c596e8375523af5cd92864d87 (diff)
downloadgitea-3f1c0841cb9fc61136b85c6b39613679d2851707.tar.gz
gitea-3f1c0841cb9fc61136b85c6b39613679d2851707.zip
Granular webhook events (#9626)
* Initial work Signed-off-by: jolheiser <john.olheiser@gmail.com> * Add PR reviews and API coverage Signed-off-by: jolheiser <john.olheiser@gmail.com> * Split up events Signed-off-by: jolheiser <john.olheiser@gmail.com> * Add migration and locale Signed-off-by: jolheiser <john.olheiser@gmail.com> * Format Signed-off-by: jolheiser <john.olheiser@gmail.com> * Revert IsPull Signed-off-by: jolheiser <john.olheiser@gmail.com> * Fix comments Signed-off-by: jolheiser <john.olheiser@gmail.com> * Fix tests Signed-off-by: jolheiser <john.olheiser@gmail.com> * Fix PR reviews Signed-off-by: jolheiser <john.olheiser@gmail.com> * Fix issue_comment Signed-off-by: jolheiser <john.olheiser@gmail.com> * Make fmt Signed-off-by: jolheiser <john.olheiser@gmail.com> * Migrations Signed-off-by: jolheiser <john.olheiser@gmail.com> * Backwards compatible API Signed-off-by: jolheiser <john.olheiser@gmail.com> * Fix feishu Signed-off-by: jolheiser <john.olheiser@gmail.com> * Move session commit Signed-off-by: jolheiser <john.olheiser@gmail.com> Co-authored-by: Lauris BH <lauris@nix.lv> Co-authored-by: guillep2k <18600385+guillep2k@users.noreply.github.com>
Diffstat (limited to 'modules')
-rw-r--r--modules/auth/repo_form.go33
-rw-r--r--modules/notification/webhook/webhook.go143
-rw-r--r--modules/structs/hook.go2
-rw-r--r--modules/webhook/deliver.go6
-rw-r--r--modules/webhook/dingtalk.go11
-rw-r--r--modules/webhook/discord.go19
-rw-r--r--modules/webhook/feishu.go2
-rw-r--r--modules/webhook/msteams.go15
-rw-r--r--modules/webhook/slack.go11
-rw-r--r--modules/webhook/telegram.go11
10 files changed, 160 insertions, 93 deletions
diff --git a/modules/auth/repo_form.go b/modules/auth/repo_form.go
index 932976b6f9..63a560728a 100644
--- a/modules/auth/repo_form.go
+++ b/modules/auth/repo_form.go
@@ -190,18 +190,27 @@ func (f *ProtectBranchForm) Validate(ctx *macaron.Context, errs binding.Errors)
// WebhookForm form for changing web hook
type WebhookForm struct {
- Events string
- Create bool
- Delete bool
- Fork bool
- Issues bool
- IssueComment bool
- Release bool
- Push bool
- PullRequest bool
- Repository bool
- Active bool
- BranchFilter string `binding:"GlobPattern"`
+ Events string
+ Create bool
+ Delete bool
+ Fork bool
+ Issues bool
+ IssueAssign bool
+ IssueLabel bool
+ IssueMilestone bool
+ IssueComment bool
+ Release bool
+ Push bool
+ PullRequest bool
+ PullRequestAssign bool
+ PullRequestLabel bool
+ PullRequestMilestone bool
+ PullRequestComment bool
+ PullRequestReview bool
+ PullRequestSync bool
+ Repository bool
+ Active bool
+ BranchFilter string `binding:"GlobPattern"`
}
// PushOnly if the hook will be triggered when push
diff --git a/modules/notification/webhook/webhook.go b/modules/notification/webhook/webhook.go
index f598d5b1f7..625cf119a9 100644
--- a/modules/notification/webhook/webhook.go
+++ b/modules/notification/webhook/webhook.go
@@ -48,7 +48,7 @@ func (m *webhookNotifier) NotifyIssueClearLabels(doer *models.User, issue *model
return
}
- err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{
+ err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequestLabel, &api.PullRequestPayload{
Action: api.HookIssueLabelCleared,
Index: issue.Index,
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
@@ -56,7 +56,7 @@ func (m *webhookNotifier) NotifyIssueClearLabels(doer *models.User, issue *model
Sender: doer.APIFormat(),
})
} else {
- err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssues, &api.IssuePayload{
+ err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssueLabel, &api.IssuePayload{
Action: api.HookIssueLabelCleared,
Index: issue.Index,
Issue: convert.ToAPIIssue(issue),
@@ -147,7 +147,7 @@ func (m *webhookNotifier) NotifyIssueChangeAssignee(doer *models.User, issue *mo
apiPullRequest.Action = api.HookIssueAssigned
}
// Assignee comment triggers a webhook
- if err := webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequest, apiPullRequest); err != nil {
+ if err := webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequestAssign, apiPullRequest); err != nil {
log.Error("PrepareWebhooks [is_pull: %v, remove_assignee: %v]: %v", issue.IsPull, removed, err)
return
}
@@ -165,7 +165,7 @@ func (m *webhookNotifier) NotifyIssueChangeAssignee(doer *models.User, issue *mo
apiIssue.Action = api.HookIssueAssigned
}
// Assignee comment triggers a webhook
- if err := webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssues, apiIssue); err != nil {
+ if err := webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssueAssign, apiIssue); err != nil {
log.Error("PrepareWebhooks [is_pull: %v, remove_assignee: %v]: %v", issue.IsPull, removed, err)
return
}
@@ -338,34 +338,54 @@ func (m *webhookNotifier) NotifyIssueChangeContent(doer *models.User, issue *mod
}
func (m *webhookNotifier) NotifyUpdateComment(doer *models.User, c *models.Comment, oldContent string) {
- if err := c.LoadPoster(); err != nil {
+ var err error
+
+ if err = c.LoadPoster(); err != nil {
log.Error("LoadPoster: %v", err)
return
}
- if err := c.LoadIssue(); err != nil {
+ if err = c.LoadIssue(); err != nil {
log.Error("LoadIssue: %v", err)
return
}
- if err := c.Issue.LoadAttributes(); err != nil {
+ if err = c.Issue.LoadAttributes(); err != nil {
log.Error("LoadAttributes: %v", err)
return
}
mode, _ := models.AccessLevel(doer, c.Issue.Repo)
- if err := webhook_module.PrepareWebhooks(c.Issue.Repo, models.HookEventIssueComment, &api.IssueCommentPayload{
- Action: api.HookIssueCommentEdited,
- Issue: convert.ToAPIIssue(c.Issue),
- Comment: c.APIFormat(),
- Changes: &api.ChangesPayload{
- Body: &api.ChangesFromPayload{
- From: oldContent,
+ if c.Issue.IsPull {
+ err = webhook_module.PrepareWebhooks(c.Issue.Repo, models.HookEventPullRequestComment, &api.IssueCommentPayload{
+ Action: api.HookIssueCommentEdited,
+ Issue: convert.ToAPIIssue(c.Issue),
+ Comment: c.APIFormat(),
+ Changes: &api.ChangesPayload{
+ Body: &api.ChangesFromPayload{
+ From: oldContent,
+ },
},
- },
- Repository: c.Issue.Repo.APIFormat(mode),
- Sender: doer.APIFormat(),
- IsPull: c.Issue.IsPull,
- }); err != nil {
+ Repository: c.Issue.Repo.APIFormat(mode),
+ Sender: doer.APIFormat(),
+ IsPull: true,
+ })
+ } else {
+ err = webhook_module.PrepareWebhooks(c.Issue.Repo, models.HookEventIssueComment, &api.IssueCommentPayload{
+ Action: api.HookIssueCommentEdited,
+ Issue: convert.ToAPIIssue(c.Issue),
+ Comment: c.APIFormat(),
+ Changes: &api.ChangesPayload{
+ Body: &api.ChangesFromPayload{
+ From: oldContent,
+ },
+ },
+ Repository: c.Issue.Repo.APIFormat(mode),
+ Sender: doer.APIFormat(),
+ IsPull: false,
+ })
+ }
+
+ if err != nil {
log.Error("PrepareWebhooks [comment_id: %d]: %v", c.ID, err)
}
}
@@ -373,45 +393,76 @@ func (m *webhookNotifier) NotifyUpdateComment(doer *models.User, c *models.Comme
func (m *webhookNotifier) NotifyCreateIssueComment(doer *models.User, repo *models.Repository,
issue *models.Issue, comment *models.Comment) {
mode, _ := models.AccessLevel(doer, repo)
- if err := webhook_module.PrepareWebhooks(repo, models.HookEventIssueComment, &api.IssueCommentPayload{
- Action: api.HookIssueCommentCreated,
- Issue: convert.ToAPIIssue(issue),
- Comment: comment.APIFormat(),
- Repository: repo.APIFormat(mode),
- Sender: doer.APIFormat(),
- IsPull: issue.IsPull,
- }); err != nil {
+
+ var err error
+ if issue.IsPull {
+ err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequestComment, &api.IssueCommentPayload{
+ Action: api.HookIssueCommentCreated,
+ Issue: convert.ToAPIIssue(issue),
+ Comment: comment.APIFormat(),
+ Repository: repo.APIFormat(mode),
+ Sender: doer.APIFormat(),
+ IsPull: true,
+ })
+ } else {
+ err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssueComment, &api.IssueCommentPayload{
+ Action: api.HookIssueCommentCreated,
+ Issue: convert.ToAPIIssue(issue),
+ Comment: comment.APIFormat(),
+ Repository: repo.APIFormat(mode),
+ Sender: doer.APIFormat(),
+ IsPull: false,
+ })
+ }
+
+ if err != nil {
log.Error("PrepareWebhooks [comment_id: %d]: %v", comment.ID, err)
}
}
func (m *webhookNotifier) NotifyDeleteComment(doer *models.User, comment *models.Comment) {
- if err := comment.LoadPoster(); err != nil {
+ var err error
+
+ if err = comment.LoadPoster(); err != nil {
log.Error("LoadPoster: %v", err)
return
}
- if err := comment.LoadIssue(); err != nil {
+ if err = comment.LoadIssue(); err != nil {
log.Error("LoadIssue: %v", err)
return
}
- if err := comment.Issue.LoadAttributes(); err != nil {
+ if err = comment.Issue.LoadAttributes(); err != nil {
log.Error("LoadAttributes: %v", err)
return
}
mode, _ := models.AccessLevel(doer, comment.Issue.Repo)
- if err := webhook_module.PrepareWebhooks(comment.Issue.Repo, models.HookEventIssueComment, &api.IssueCommentPayload{
- Action: api.HookIssueCommentDeleted,
- Issue: convert.ToAPIIssue(comment.Issue),
- Comment: comment.APIFormat(),
- Repository: comment.Issue.Repo.APIFormat(mode),
- Sender: doer.APIFormat(),
- IsPull: comment.Issue.IsPull,
- }); err != nil {
+ if comment.Issue.IsPull {
+ err = webhook_module.PrepareWebhooks(comment.Issue.Repo, models.HookEventPullRequestComment, &api.IssueCommentPayload{
+ Action: api.HookIssueCommentDeleted,
+ Issue: convert.ToAPIIssue(comment.Issue),
+ Comment: comment.APIFormat(),
+ Repository: comment.Issue.Repo.APIFormat(mode),
+ Sender: doer.APIFormat(),
+ IsPull: true,
+ })
+ } else {
+ err = webhook_module.PrepareWebhooks(comment.Issue.Repo, models.HookEventIssueComment, &api.IssueCommentPayload{
+ Action: api.HookIssueCommentDeleted,
+ Issue: convert.ToAPIIssue(comment.Issue),
+ Comment: comment.APIFormat(),
+ Repository: comment.Issue.Repo.APIFormat(mode),
+ Sender: doer.APIFormat(),
+ IsPull: false,
+ })
+ }
+
+ if err != nil {
log.Error("PrepareWebhooks [comment_id: %d]: %v", comment.ID, err)
}
+
}
func (m *webhookNotifier) NotifyIssueChangeLabels(doer *models.User, issue *models.Issue,
@@ -438,7 +489,7 @@ func (m *webhookNotifier) NotifyIssueChangeLabels(doer *models.User, issue *mode
log.Error("LoadIssue: %v", err)
return
}
- err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{
+ err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequestLabel, &api.PullRequestPayload{
Action: api.HookIssueLabelUpdated,
Index: issue.Index,
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
@@ -446,7 +497,7 @@ func (m *webhookNotifier) NotifyIssueChangeLabels(doer *models.User, issue *mode
Sender: doer.APIFormat(),
})
} else {
- err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssues, &api.IssuePayload{
+ err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssueLabel, &api.IssuePayload{
Action: api.HookIssueLabelUpdated,
Index: issue.Index,
Issue: convert.ToAPIIssue(issue),
@@ -480,7 +531,7 @@ func (m *webhookNotifier) NotifyIssueChangeMilestone(doer *models.User, issue *m
log.Error("LoadIssue: %v", err)
return
}
- err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{
+ err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventPullRequestMilestone, &api.PullRequestPayload{
Action: hookAction,
Index: issue.Index,
PullRequest: convert.ToAPIPullRequest(issue.PullRequest),
@@ -488,7 +539,7 @@ func (m *webhookNotifier) NotifyIssueChangeMilestone(doer *models.User, issue *m
Sender: doer.APIFormat(),
})
} else {
- err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssues, &api.IssuePayload{
+ err = webhook_module.PrepareWebhooks(issue.Repo, models.HookEventIssueMilestone, &api.IssuePayload{
Action: hookAction,
Index: issue.Index,
Issue: convert.ToAPIIssue(issue),
@@ -597,11 +648,11 @@ func (m *webhookNotifier) NotifyPullRequestReview(pr *models.PullRequest, review
switch review.Type {
case models.ReviewTypeApprove:
- reviewHookType = models.HookEventPullRequestApproved
+ reviewHookType = models.HookEventPullRequestReviewApproved
case models.ReviewTypeComment:
reviewHookType = models.HookEventPullRequestComment
case models.ReviewTypeReject:
- reviewHookType = models.HookEventPullRequestRejected
+ reviewHookType = models.HookEventPullRequestReviewRejected
default:
// unsupported review webhook type here
log.Error("Unsupported review webhook type")
@@ -619,7 +670,7 @@ func (m *webhookNotifier) NotifyPullRequestReview(pr *models.PullRequest, review
return
}
if err := webhook_module.PrepareWebhooks(review.Issue.Repo, reviewHookType, &api.PullRequestPayload{
- Action: api.HookIssueSynchronized,
+ Action: api.HookIssueReviewed,
Index: review.Issue.Index,
PullRequest: convert.ToAPIPullRequest(pr),
Repository: review.Issue.Repo.APIFormat(mode),
@@ -673,7 +724,7 @@ func (m *webhookNotifier) NotifyPullRequestSynchronized(doer *models.User, pr *m
return
}
- if err := webhook_module.PrepareWebhooks(pr.Issue.Repo, models.HookEventPullRequest, &api.PullRequestPayload{
+ if err := webhook_module.PrepareWebhooks(pr.Issue.Repo, models.HookEventPullRequestSync, &api.PullRequestPayload{
Action: api.HookIssueSynchronized,
Index: pr.Issue.Index,
PullRequest: convert.ToAPIPullRequest(pr),
diff --git a/modules/structs/hook.go b/modules/structs/hook.go
index f2bc4f16e1..a10dd4281c 100644
--- a/modules/structs/hook.go
+++ b/modules/structs/hook.go
@@ -374,6 +374,8 @@ const (
HookIssueMilestoned HookIssueAction = "milestoned"
// HookIssueDemilestoned is an issue action for when a milestone is cleared on an issue.
HookIssueDemilestoned HookIssueAction = "demilestoned"
+ // HookIssueReviewed is an issue action for when a pull request is reviewed
+ HookIssueReviewed HookIssueAction = "reviewed"
)
// IssuePayload represents the payload information that is sent along with an issue event.
diff --git a/modules/webhook/deliver.go b/modules/webhook/deliver.go
index 9f5c938f83..505d27a2de 100644
--- a/modules/webhook/deliver.go
+++ b/modules/webhook/deliver.go
@@ -74,13 +74,13 @@ func Deliver(t *models.HookTask) error {
}
req.Header.Add("X-Gitea-Delivery", t.UUID)
- req.Header.Add("X-Gitea-Event", string(t.EventType))
+ req.Header.Add("X-Gitea-Event", t.EventType.Event())
req.Header.Add("X-Gitea-Signature", t.Signature)
req.Header.Add("X-Gogs-Delivery", t.UUID)
- req.Header.Add("X-Gogs-Event", string(t.EventType))
+ req.Header.Add("X-Gogs-Event", t.EventType.Event())
req.Header.Add("X-Gogs-Signature", t.Signature)
req.Header["X-GitHub-Delivery"] = []string{t.UUID}
- req.Header["X-GitHub-Event"] = []string{string(t.EventType)}
+ req.Header["X-GitHub-Event"] = []string{t.EventType.Event()}
// Record delivery information.
t.RequestInfo = &models.HookRequest{
diff --git a/modules/webhook/dingtalk.go b/modules/webhook/dingtalk.go
index fc99202a70..f2dd5a79ed 100644
--- a/modules/webhook/dingtalk.go
+++ b/modules/webhook/dingtalk.go
@@ -181,7 +181,7 @@ func getDingtalkPullRequestPayload(p *api.PullRequestPayload) (*DingtalkPayload,
func getDingtalkPullRequestApprovalPayload(p *api.PullRequestPayload, event models.HookEventType) (*DingtalkPayload, error) {
var text, title string
switch p.Action {
- case api.HookIssueSynchronized:
+ case api.HookIssueReviewed:
action, err := parseHookPullRequestEventType(event)
if err != nil {
return nil, err
@@ -261,15 +261,16 @@ func GetDingtalkPayload(p api.Payloader, event models.HookEventType, meta string
return getDingtalkDeletePayload(p.(*api.DeletePayload))
case models.HookEventFork:
return getDingtalkForkPayload(p.(*api.ForkPayload))
- case models.HookEventIssues:
+ case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
return getDingtalkIssuesPayload(p.(*api.IssuePayload))
- case models.HookEventIssueComment:
+ case models.HookEventIssueComment, models.HookEventPullRequestComment:
return getDingtalkIssueCommentPayload(p.(*api.IssueCommentPayload))
case models.HookEventPush:
return getDingtalkPushPayload(p.(*api.PushPayload))
- case models.HookEventPullRequest:
+ case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
+ models.HookEventPullRequestMilestone, models.HookEventPullRequestSync:
return getDingtalkPullRequestPayload(p.(*api.PullRequestPayload))
- case models.HookEventPullRequestApproved, models.HookEventPullRequestRejected, models.HookEventPullRequestComment:
+ case models.HookEventPullRequestReviewApproved, models.HookEventPullRequestReviewRejected, models.HookEventPullRequestReviewComment:
return getDingtalkPullRequestApprovalPayload(p.(*api.PullRequestPayload), event)
case models.HookEventRepository:
return getDingtalkRepositoryPayload(p.(*api.RepositoryPayload))
diff --git a/modules/webhook/discord.go b/modules/webhook/discord.go
index 732821c183..e455a102bd 100644
--- a/modules/webhook/discord.go
+++ b/modules/webhook/discord.go
@@ -296,7 +296,7 @@ func getDiscordPullRequestApprovalPayload(p *api.PullRequestPayload, meta *Disco
var text, title string
var color int
switch p.Action {
- case api.HookIssueSynchronized:
+ case api.HookIssueReviewed:
action, err := parseHookPullRequestEventType(event)
if err != nil {
return nil, err
@@ -306,9 +306,9 @@ func getDiscordPullRequestApprovalPayload(p *api.PullRequestPayload, meta *Disco
text = p.Review.Content
switch event {
- case models.HookEventPullRequestApproved:
+ case models.HookEventPullRequestReviewApproved:
color = greenColor
- case models.HookEventPullRequestRejected:
+ case models.HookEventPullRequestReviewRejected:
color = redColor
case models.HookEventPullRequestComment:
color = greyColor
@@ -405,15 +405,16 @@ func GetDiscordPayload(p api.Payloader, event models.HookEventType, meta string)
return getDiscordDeletePayload(p.(*api.DeletePayload), discord)
case models.HookEventFork:
return getDiscordForkPayload(p.(*api.ForkPayload), discord)
- case models.HookEventIssues:
+ case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
return getDiscordIssuesPayload(p.(*api.IssuePayload), discord)
- case models.HookEventIssueComment:
+ case models.HookEventIssueComment, models.HookEventPullRequestComment:
return getDiscordIssueCommentPayload(p.(*api.IssueCommentPayload), discord)
case models.HookEventPush:
return getDiscordPushPayload(p.(*api.PushPayload), discord)
- case models.HookEventPullRequest:
+ case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
+ models.HookEventPullRequestMilestone, models.HookEventPullRequestSync:
return getDiscordPullRequestPayload(p.(*api.PullRequestPayload), discord)
- case models.HookEventPullRequestRejected, models.HookEventPullRequestApproved, models.HookEventPullRequestComment:
+ case models.HookEventPullRequestReviewRejected, models.HookEventPullRequestReviewApproved, models.HookEventPullRequestReviewComment:
return getDiscordPullRequestApprovalPayload(p.(*api.PullRequestPayload), discord, event)
case models.HookEventRepository:
return getDiscordRepositoryPayload(p.(*api.RepositoryPayload), discord)
@@ -428,9 +429,9 @@ func parseHookPullRequestEventType(event models.HookEventType) (string, error) {
switch event {
- case models.HookEventPullRequestApproved:
+ case models.HookEventPullRequestReviewApproved:
return "approved", nil
- case models.HookEventPullRequestRejected:
+ case models.HookEventPullRequestReviewRejected:
return "rejected", nil
case models.HookEventPullRequestComment:
return "comment", nil
diff --git a/modules/webhook/feishu.go b/modules/webhook/feishu.go
index 6af78494c9..57eb909c48 100644
--- a/modules/webhook/feishu.go
+++ b/modules/webhook/feishu.go
@@ -189,7 +189,7 @@ func GetFeishuPayload(p api.Payloader, event models.HookEventType, meta string)
return getFeishuPushPayload(p.(*api.PushPayload))
case models.HookEventPullRequest:
return getFeishuPullRequestPayload(p.(*api.PullRequestPayload))
- case models.HookEventPullRequestApproved, models.HookEventPullRequestRejected, models.HookEventPullRequestComment:
+ case models.HookEventPullRequestReviewApproved, models.HookEventPullRequestReviewRejected, models.HookEventPullRequestComment:
return getFeishuPullRequestApprovalPayload(p.(*api.PullRequestPayload), event)
case models.HookEventRepository:
return getFeishuRepositoryPayload(p.(*api.RepositoryPayload))
diff --git a/modules/webhook/msteams.go b/modules/webhook/msteams.go
index b9ceb5ee0b..a0925010d6 100644
--- a/modules/webhook/msteams.go
+++ b/modules/webhook/msteams.go
@@ -395,7 +395,7 @@ func getMSTeamsPullRequestApprovalPayload(p *api.PullRequestPayload, event model
var text, title string
var color int
switch p.Action {
- case api.HookIssueSynchronized:
+ case api.HookIssueReviewed:
action, err := parseHookPullRequestEventType(event)
if err != nil {
return nil, err
@@ -405,9 +405,9 @@ func getMSTeamsPullRequestApprovalPayload(p *api.PullRequestPayload, event model
text = p.Review.Content
switch event {
- case models.HookEventPullRequestApproved:
+ case models.HookEventPullRequestReviewApproved:
color = greenColor
- case models.HookEventPullRequestRejected:
+ case models.HookEventPullRequestReviewRejected:
color = redColor
case models.HookEventPullRequestComment:
color = greyColor
@@ -555,15 +555,16 @@ func GetMSTeamsPayload(p api.Payloader, event models.HookEventType, meta string)
return getMSTeamsDeletePayload(p.(*api.DeletePayload))
case models.HookEventFork:
return getMSTeamsForkPayload(p.(*api.ForkPayload))
- case models.HookEventIssues:
+ case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
return getMSTeamsIssuesPayload(p.(*api.IssuePayload))
- case models.HookEventIssueComment:
+ case models.HookEventIssueComment, models.HookEventPullRequestComment:
return getMSTeamsIssueCommentPayload(p.(*api.IssueCommentPayload))
case models.HookEventPush:
return getMSTeamsPushPayload(p.(*api.PushPayload))
- case models.HookEventPullRequest:
+ case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
+ models.HookEventPullRequestMilestone, models.HookEventPullRequestSync:
return getMSTeamsPullRequestPayload(p.(*api.PullRequestPayload))
- case models.HookEventPullRequestRejected, models.HookEventPullRequestApproved, models.HookEventPullRequestComment:
+ case models.HookEventPullRequestReviewRejected, models.HookEventPullRequestReviewApproved, models.HookEventPullRequestReviewComment:
return getMSTeamsPullRequestApprovalPayload(p.(*api.PullRequestPayload), event)
case models.HookEventRepository:
return getMSTeamsRepositoryPayload(p.(*api.RepositoryPayload))
diff --git a/modules/webhook/slack.go b/modules/webhook/slack.go
index 361e15ece5..e3715ab00c 100644
--- a/modules/webhook/slack.go
+++ b/modules/webhook/slack.go
@@ -271,7 +271,7 @@ func getSlackPullRequestApprovalPayload(p *api.PullRequestPayload, slack *SlackM
var text string
switch p.Action {
- case api.HookIssueSynchronized:
+ case api.HookIssueReviewed:
action, err := parseHookPullRequestEventType(event)
if err != nil {
return nil, err
@@ -324,15 +324,16 @@ func GetSlackPayload(p api.Payloader, event models.HookEventType, meta string) (
return getSlackDeletePayload(p.(*api.DeletePayload), slack)
case models.HookEventFork:
return getSlackForkPayload(p.(*api.ForkPayload), slack)
- case models.HookEventIssues:
+ case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
return getSlackIssuesPayload(p.(*api.IssuePayload), slack)
- case models.HookEventIssueComment:
+ case models.HookEventIssueComment, models.HookEventPullRequestComment:
return getSlackIssueCommentPayload(p.(*api.IssueCommentPayload), slack)
case models.HookEventPush:
return getSlackPushPayload(p.(*api.PushPayload), slack)
- case models.HookEventPullRequest:
+ case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
+ models.HookEventPullRequestMilestone, models.HookEventPullRequestSync:
return getSlackPullRequestPayload(p.(*api.PullRequestPayload), slack)
- case models.HookEventPullRequestRejected, models.HookEventPullRequestApproved, models.HookEventPullRequestComment:
+ case models.HookEventPullRequestReviewRejected, models.HookEventPullRequestReviewApproved, models.HookEventPullRequestReviewComment:
return getSlackPullRequestApprovalPayload(p.(*api.PullRequestPayload), slack, event)
case models.HookEventRepository:
return getSlackRepositoryPayload(p.(*api.RepositoryPayload), slack)
diff --git a/modules/webhook/telegram.go b/modules/webhook/telegram.go
index 47d54f7cb9..cf096e2c66 100644
--- a/modules/webhook/telegram.go
+++ b/modules/webhook/telegram.go
@@ -151,7 +151,7 @@ func getTelegramPullRequestPayload(p *api.PullRequestPayload) (*TelegramPayload,
func getTelegramPullRequestApprovalPayload(p *api.PullRequestPayload, event models.HookEventType) (*TelegramPayload, error) {
var text, attachmentText string
switch p.Action {
- case api.HookIssueSynchronized:
+ case api.HookIssueReviewed:
action, err := parseHookPullRequestEventType(event)
if err != nil {
return nil, err
@@ -203,15 +203,16 @@ func GetTelegramPayload(p api.Payloader, event models.HookEventType, meta string
return getTelegramDeletePayload(p.(*api.DeletePayload))
case models.HookEventFork:
return getTelegramForkPayload(p.(*api.ForkPayload))
- case models.HookEventIssues:
+ case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
return getTelegramIssuesPayload(p.(*api.IssuePayload))
- case models.HookEventIssueComment:
+ case models.HookEventIssueComment, models.HookEventPullRequestComment:
return getTelegramIssueCommentPayload(p.(*api.IssueCommentPayload))
case models.HookEventPush:
return getTelegramPushPayload(p.(*api.PushPayload))
- case models.HookEventPullRequest:
+ case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
+ models.HookEventPullRequestMilestone, models.HookEventPullRequestSync:
return getTelegramPullRequestPayload(p.(*api.PullRequestPayload))
- case models.HookEventPullRequestRejected, models.HookEventPullRequestApproved, models.HookEventPullRequestComment:
+ case models.HookEventPullRequestReviewRejected, models.HookEventPullRequestReviewApproved, models.HookEventPullRequestReviewComment:
return getTelegramPullRequestApprovalPayload(p.(*api.PullRequestPayload), event)
case models.HookEventRepository:
return getTelegramRepositoryPayload(p.(*api.RepositoryPayload))