]> source.dussan.org Git - gitea.git/commitdiff
Fix comments webhook panic backport (#12058)
authorCornel <github@codejuggle.dj>
Fri, 26 Jun 2020 01:19:11 +0000 (04:19 +0300)
committerGitHub <noreply@github.com>
Fri, 26 Jun 2020 01:19:11 +0000 (21:19 -0400)
* Handle HookIssueReviewed action in webhook

* Fix webhook comment handling type cast panic

modules/webhook/dingtalk.go
modules/webhook/discord.go
modules/webhook/feishu.go
modules/webhook/general.go
modules/webhook/matrix.go
modules/webhook/msteams.go
modules/webhook/slack.go
modules/webhook/telegram.go

index f2dd5a79edd95f5327bcc7c2f3b2602839462c33..4e0e52451abb119df5cf15f37a14154c36fbb01a 100644 (file)
@@ -264,7 +264,11 @@ func GetDingtalkPayload(p api.Payloader, event models.HookEventType, meta string
        case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
                return getDingtalkIssuesPayload(p.(*api.IssuePayload))
        case models.HookEventIssueComment, models.HookEventPullRequestComment:
-               return getDingtalkIssueCommentPayload(p.(*api.IssueCommentPayload))
+               pl, ok := p.(*api.IssueCommentPayload)
+               if ok {
+                       return getDingtalkIssueCommentPayload(pl)
+               }
+               return getDingtalkPullRequestPayload(p.(*api.PullRequestPayload))
        case models.HookEventPush:
                return getDingtalkPushPayload(p.(*api.PushPayload))
        case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
index e455a102bd1b7524644278d7733f127833a27ccf..761129d8d9e7292ba6409c41e95a1678cbf67e10 100644 (file)
@@ -408,7 +408,11 @@ func GetDiscordPayload(p api.Payloader, event models.HookEventType, meta string)
        case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
                return getDiscordIssuesPayload(p.(*api.IssuePayload), discord)
        case models.HookEventIssueComment, models.HookEventPullRequestComment:
-               return getDiscordIssueCommentPayload(p.(*api.IssueCommentPayload), discord)
+               pl, ok := p.(*api.IssueCommentPayload)
+               if ok {
+                       return getDiscordIssueCommentPayload(pl, discord)
+               }
+               return getDiscordPullRequestPayload(p.(*api.PullRequestPayload), discord)
        case models.HookEventPush:
                return getDiscordPushPayload(p.(*api.PushPayload), discord)
        case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
index 57eb909c4807e3632aed2550a0c96b4e7da15a25..4beda9014c54d5dea831848a742db4bfd717d352 100644 (file)
@@ -183,13 +183,17 @@ func GetFeishuPayload(p api.Payloader, event models.HookEventType, meta string)
                return getFeishuForkPayload(p.(*api.ForkPayload))
        case models.HookEventIssues:
                return getFeishuIssuesPayload(p.(*api.IssuePayload))
-       case models.HookEventIssueComment:
-               return getFeishuIssueCommentPayload(p.(*api.IssueCommentPayload))
+       case models.HookEventIssueComment, models.HookEventPullRequestComment:
+               pl, ok := p.(*api.IssueCommentPayload)
+               if ok {
+                       return getFeishuIssueCommentPayload(pl)
+               }
+               return getFeishuPullRequestPayload(p.(*api.PullRequestPayload))
        case models.HookEventPush:
                return getFeishuPushPayload(p.(*api.PushPayload))
        case models.HookEventPullRequest:
                return getFeishuPullRequestPayload(p.(*api.PullRequestPayload))
-       case models.HookEventPullRequestReviewApproved, models.HookEventPullRequestReviewRejected, models.HookEventPullRequestComment:
+       case models.HookEventPullRequestReviewApproved, models.HookEventPullRequestReviewRejected:
                return getFeishuPullRequestApprovalPayload(p.(*api.PullRequestPayload), event)
        case models.HookEventRepository:
                return getFeishuRepositoryPayload(p.(*api.RepositoryPayload))
index bc9a10b5291bfd0b7e33ddf5f1802e5e5e1e8d01..ec247a24109be577cbea6e5048c28648b31a2718 100644 (file)
@@ -119,6 +119,8 @@ func getPullRequestPayloadInfo(p *api.PullRequestPayload, linkFormatter linkForm
                        linkFormatter(mileStoneLink, p.PullRequest.Milestone.Title), titleLink)
        case api.HookIssueDemilestoned:
                text = fmt.Sprintf("[%s] Pull request milestone cleared: %s", repoLink, titleLink)
+       case api.HookIssueReviewed:
+               text = fmt.Sprintf("[%s] Pull request reviewed: %s", repoLink, titleLink)
        }
        if withSender {
                text += fmt.Sprintf(" by %s", linkFormatter(setting.AppURL+p.Sender.UserName, p.Sender.UserName))
index bf72e6e3400b7675400b105737fabf58959f9e11..68c65623f727a3191ebda7030a7ae377e8481e5e 100644 (file)
@@ -230,7 +230,11 @@ func GetMatrixPayload(p api.Payloader, event models.HookEventType, meta string)
        case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
                return getMatrixIssuesPayload(p.(*api.IssuePayload), matrix)
        case models.HookEventIssueComment, models.HookEventPullRequestComment:
-               return getMatrixIssueCommentPayload(p.(*api.IssueCommentPayload), matrix)
+               pl, ok := p.(*api.IssueCommentPayload)
+               if ok {
+                       return getMatrixIssueCommentPayload(pl, matrix)
+               }
+               return getMatrixPullRequestPayload(p.(*api.PullRequestPayload), matrix)
        case models.HookEventPush:
                return getMatrixPushPayload(p.(*api.PushPayload), matrix)
        case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
index a0925010d6179e348d5f6e6ff190431abf35d28c..e7ec396f2941c3c6d2bf62702ca5dded57aabe82 100644 (file)
@@ -558,7 +558,11 @@ func GetMSTeamsPayload(p api.Payloader, event models.HookEventType, meta string)
        case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
                return getMSTeamsIssuesPayload(p.(*api.IssuePayload))
        case models.HookEventIssueComment, models.HookEventPullRequestComment:
-               return getMSTeamsIssueCommentPayload(p.(*api.IssueCommentPayload))
+               pl, ok := p.(*api.IssueCommentPayload)
+               if ok {
+                       return getMSTeamsIssueCommentPayload(pl)
+               }
+               return getMSTeamsPullRequestPayload(p.(*api.PullRequestPayload))
        case models.HookEventPush:
                return getMSTeamsPushPayload(p.(*api.PushPayload))
        case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
index 1e9413efd6147e60fdf1f5668186b33b8e24d6b7..4177bd1250e922a37135d31bb32cbee0078ff02c 100644 (file)
@@ -321,7 +321,11 @@ func GetSlackPayload(p api.Payloader, event models.HookEventType, meta string) (
        case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
                return getSlackIssuesPayload(p.(*api.IssuePayload), slack)
        case models.HookEventIssueComment, models.HookEventPullRequestComment:
-               return getSlackIssueCommentPayload(p.(*api.IssueCommentPayload), slack)
+               pl, ok := p.(*api.IssueCommentPayload)
+               if ok {
+                       return getSlackIssueCommentPayload(pl, slack)
+               }
+               return getSlackPullRequestPayload(p.(*api.PullRequestPayload), slack)
        case models.HookEventPush:
                return getSlackPushPayload(p.(*api.PushPayload), slack)
        case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
index cf096e2c66ecb8e3aad4a46fc400c4f678a5ec90..6d2f804a70237bb3173ca60f3e77cd81b739b44d 100644 (file)
@@ -206,7 +206,11 @@ func GetTelegramPayload(p api.Payloader, event models.HookEventType, meta string
        case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
                return getTelegramIssuesPayload(p.(*api.IssuePayload))
        case models.HookEventIssueComment, models.HookEventPullRequestComment:
-               return getTelegramIssueCommentPayload(p.(*api.IssueCommentPayload))
+               pl, ok := p.(*api.IssueCommentPayload)
+               if ok {
+                       return getTelegramIssueCommentPayload(pl)
+               }
+               return getTelegramPullRequestPayload(p.(*api.PullRequestPayload))
        case models.HookEventPush:
                return getTelegramPushPayload(p.(*api.PushPayload))
        case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,