Skip to content

Commit 7cbbbd4

Browse files
cornelklunny
authored and
Yohann Delafollye
committed
Fix comments webhook panic (go-gitea#12046)
* Fix webhook comment handling type cast panic * Handle HookIssueReviewed action in webhook Co-authored-by: Lunny Xiao <[email protected]>
1 parent 3cf3e2f commit 7cbbbd4

File tree

8 files changed

+39
-9
lines changed

8 files changed

+39
-9
lines changed

modules/webhook/dingtalk.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -264,7 +264,11 @@ func GetDingtalkPayload(p api.Payloader, event models.HookEventType, meta string
264264
case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
265265
return getDingtalkIssuesPayload(p.(*api.IssuePayload))
266266
case models.HookEventIssueComment, models.HookEventPullRequestComment:
267-
return getDingtalkIssueCommentPayload(p.(*api.IssueCommentPayload))
267+
pl, ok := p.(*api.IssueCommentPayload)
268+
if ok {
269+
return getDingtalkIssueCommentPayload(pl)
270+
}
271+
return getDingtalkPullRequestPayload(p.(*api.PullRequestPayload))
268272
case models.HookEventPush:
269273
return getDingtalkPushPayload(p.(*api.PushPayload))
270274
case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,

modules/webhook/discord.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -408,7 +408,11 @@ func GetDiscordPayload(p api.Payloader, event models.HookEventType, meta string)
408408
case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
409409
return getDiscordIssuesPayload(p.(*api.IssuePayload), discord)
410410
case models.HookEventIssueComment, models.HookEventPullRequestComment:
411-
return getDiscordIssueCommentPayload(p.(*api.IssueCommentPayload), discord)
411+
pl, ok := p.(*api.IssueCommentPayload)
412+
if ok {
413+
return getDiscordIssueCommentPayload(pl, discord)
414+
}
415+
return getDiscordPullRequestPayload(p.(*api.PullRequestPayload), discord)
412416
case models.HookEventPush:
413417
return getDiscordPushPayload(p.(*api.PushPayload), discord)
414418
case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,

modules/webhook/feishu.go

+7-3
Original file line numberDiff line numberDiff line change
@@ -183,13 +183,17 @@ func GetFeishuPayload(p api.Payloader, event models.HookEventType, meta string)
183183
return getFeishuForkPayload(p.(*api.ForkPayload))
184184
case models.HookEventIssues:
185185
return getFeishuIssuesPayload(p.(*api.IssuePayload))
186-
case models.HookEventIssueComment:
187-
return getFeishuIssueCommentPayload(p.(*api.IssueCommentPayload))
186+
case models.HookEventIssueComment, models.HookEventPullRequestComment:
187+
pl, ok := p.(*api.IssueCommentPayload)
188+
if ok {
189+
return getFeishuIssueCommentPayload(pl)
190+
}
191+
return getFeishuPullRequestPayload(p.(*api.PullRequestPayload))
188192
case models.HookEventPush:
189193
return getFeishuPushPayload(p.(*api.PushPayload))
190194
case models.HookEventPullRequest:
191195
return getFeishuPullRequestPayload(p.(*api.PullRequestPayload))
192-
case models.HookEventPullRequestReviewApproved, models.HookEventPullRequestReviewRejected, models.HookEventPullRequestComment:
196+
case models.HookEventPullRequestReviewApproved, models.HookEventPullRequestReviewRejected:
193197
return getFeishuPullRequestApprovalPayload(p.(*api.PullRequestPayload), event)
194198
case models.HookEventRepository:
195199
return getFeishuRepositoryPayload(p.(*api.RepositoryPayload))

modules/webhook/general.go

+2
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@ func getPullRequestPayloadInfo(p *api.PullRequestPayload, linkFormatter linkForm
119119
linkFormatter(mileStoneLink, p.PullRequest.Milestone.Title), titleLink)
120120
case api.HookIssueDemilestoned:
121121
text = fmt.Sprintf("[%s] Pull request milestone cleared: %s", repoLink, titleLink)
122+
case api.HookIssueReviewed:
123+
text = fmt.Sprintf("[%s] Pull request reviewed: %s", repoLink, titleLink)
122124
}
123125
if withSender {
124126
text += fmt.Sprintf(" by %s", linkFormatter(setting.AppURL+p.Sender.UserName, p.Sender.UserName))

modules/webhook/matrix.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,11 @@ func GetMatrixPayload(p api.Payloader, event models.HookEventType, meta string)
230230
case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
231231
return getMatrixIssuesPayload(p.(*api.IssuePayload), matrix)
232232
case models.HookEventIssueComment, models.HookEventPullRequestComment:
233-
return getMatrixIssueCommentPayload(p.(*api.IssueCommentPayload), matrix)
233+
pl, ok := p.(*api.IssueCommentPayload)
234+
if ok {
235+
return getMatrixIssueCommentPayload(pl, matrix)
236+
}
237+
return getMatrixPullRequestPayload(p.(*api.PullRequestPayload), matrix)
234238
case models.HookEventPush:
235239
return getMatrixPushPayload(p.(*api.PushPayload), matrix)
236240
case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,

modules/webhook/msteams.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -558,7 +558,11 @@ func GetMSTeamsPayload(p api.Payloader, event models.HookEventType, meta string)
558558
case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
559559
return getMSTeamsIssuesPayload(p.(*api.IssuePayload))
560560
case models.HookEventIssueComment, models.HookEventPullRequestComment:
561-
return getMSTeamsIssueCommentPayload(p.(*api.IssueCommentPayload))
561+
pl, ok := p.(*api.IssueCommentPayload)
562+
if ok {
563+
return getMSTeamsIssueCommentPayload(pl)
564+
}
565+
return getMSTeamsPullRequestPayload(p.(*api.PullRequestPayload))
562566
case models.HookEventPush:
563567
return getMSTeamsPushPayload(p.(*api.PushPayload))
564568
case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,

modules/webhook/slack.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -321,7 +321,11 @@ func GetSlackPayload(p api.Payloader, event models.HookEventType, meta string) (
321321
case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
322322
return getSlackIssuesPayload(p.(*api.IssuePayload), slack)
323323
case models.HookEventIssueComment, models.HookEventPullRequestComment:
324-
return getSlackIssueCommentPayload(p.(*api.IssueCommentPayload), slack)
324+
pl, ok := p.(*api.IssueCommentPayload)
325+
if ok {
326+
return getSlackIssueCommentPayload(pl, slack)
327+
}
328+
return getSlackPullRequestPayload(p.(*api.PullRequestPayload), slack)
325329
case models.HookEventPush:
326330
return getSlackPushPayload(p.(*api.PushPayload), slack)
327331
case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,

modules/webhook/telegram.go

+5-1
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,11 @@ func GetTelegramPayload(p api.Payloader, event models.HookEventType, meta string
206206
case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
207207
return getTelegramIssuesPayload(p.(*api.IssuePayload))
208208
case models.HookEventIssueComment, models.HookEventPullRequestComment:
209-
return getTelegramIssueCommentPayload(p.(*api.IssueCommentPayload))
209+
pl, ok := p.(*api.IssueCommentPayload)
210+
if ok {
211+
return getTelegramIssueCommentPayload(pl)
212+
}
213+
return getTelegramPullRequestPayload(p.(*api.PullRequestPayload))
210214
case models.HookEventPush:
211215
return getTelegramPushPayload(p.(*api.PushPayload))
212216
case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,

0 commit comments

Comments
 (0)