Fix comments webhook panic (#12046)
* Fix webhook comment handling type cast panic * Handle HookIssueReviewed action in webhook Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
This commit is contained in:
parent
9ef2f62a79
commit
ebc35f2b2e
8 changed files with 39 additions and 9 deletions
|
@ -264,7 +264,11 @@ func GetDingtalkPayload(p api.Payloader, event models.HookEventType, meta string
|
||||||
case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
|
case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
|
||||||
return getDingtalkIssuesPayload(p.(*api.IssuePayload))
|
return getDingtalkIssuesPayload(p.(*api.IssuePayload))
|
||||||
case models.HookEventIssueComment, models.HookEventPullRequestComment:
|
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:
|
case models.HookEventPush:
|
||||||
return getDingtalkPushPayload(p.(*api.PushPayload))
|
return getDingtalkPushPayload(p.(*api.PushPayload))
|
||||||
case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
|
case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
|
||||||
|
|
|
@ -408,7 +408,11 @@ func GetDiscordPayload(p api.Payloader, event models.HookEventType, meta string)
|
||||||
case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
|
case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
|
||||||
return getDiscordIssuesPayload(p.(*api.IssuePayload), discord)
|
return getDiscordIssuesPayload(p.(*api.IssuePayload), discord)
|
||||||
case models.HookEventIssueComment, models.HookEventPullRequestComment:
|
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:
|
case models.HookEventPush:
|
||||||
return getDiscordPushPayload(p.(*api.PushPayload), discord)
|
return getDiscordPushPayload(p.(*api.PushPayload), discord)
|
||||||
case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
|
case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
|
||||||
|
|
|
@ -183,13 +183,17 @@ func GetFeishuPayload(p api.Payloader, event models.HookEventType, meta string)
|
||||||
return getFeishuForkPayload(p.(*api.ForkPayload))
|
return getFeishuForkPayload(p.(*api.ForkPayload))
|
||||||
case models.HookEventIssues:
|
case models.HookEventIssues:
|
||||||
return getFeishuIssuesPayload(p.(*api.IssuePayload))
|
return getFeishuIssuesPayload(p.(*api.IssuePayload))
|
||||||
case models.HookEventIssueComment:
|
case models.HookEventIssueComment, models.HookEventPullRequestComment:
|
||||||
return getFeishuIssueCommentPayload(p.(*api.IssueCommentPayload))
|
pl, ok := p.(*api.IssueCommentPayload)
|
||||||
|
if ok {
|
||||||
|
return getFeishuIssueCommentPayload(pl)
|
||||||
|
}
|
||||||
|
return getFeishuPullRequestPayload(p.(*api.PullRequestPayload))
|
||||||
case models.HookEventPush:
|
case models.HookEventPush:
|
||||||
return getFeishuPushPayload(p.(*api.PushPayload))
|
return getFeishuPushPayload(p.(*api.PushPayload))
|
||||||
case models.HookEventPullRequest:
|
case models.HookEventPullRequest:
|
||||||
return getFeishuPullRequestPayload(p.(*api.PullRequestPayload))
|
return getFeishuPullRequestPayload(p.(*api.PullRequestPayload))
|
||||||
case models.HookEventPullRequestReviewApproved, models.HookEventPullRequestReviewRejected, models.HookEventPullRequestComment:
|
case models.HookEventPullRequestReviewApproved, models.HookEventPullRequestReviewRejected:
|
||||||
return getFeishuPullRequestApprovalPayload(p.(*api.PullRequestPayload), event)
|
return getFeishuPullRequestApprovalPayload(p.(*api.PullRequestPayload), event)
|
||||||
case models.HookEventRepository:
|
case models.HookEventRepository:
|
||||||
return getFeishuRepositoryPayload(p.(*api.RepositoryPayload))
|
return getFeishuRepositoryPayload(p.(*api.RepositoryPayload))
|
||||||
|
|
|
@ -119,6 +119,8 @@ func getPullRequestPayloadInfo(p *api.PullRequestPayload, linkFormatter linkForm
|
||||||
linkFormatter(mileStoneLink, p.PullRequest.Milestone.Title), titleLink)
|
linkFormatter(mileStoneLink, p.PullRequest.Milestone.Title), titleLink)
|
||||||
case api.HookIssueDemilestoned:
|
case api.HookIssueDemilestoned:
|
||||||
text = fmt.Sprintf("[%s] Pull request milestone cleared: %s", repoLink, titleLink)
|
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 {
|
if withSender {
|
||||||
text += fmt.Sprintf(" by %s", linkFormatter(setting.AppURL+p.Sender.UserName, p.Sender.UserName))
|
text += fmt.Sprintf(" by %s", linkFormatter(setting.AppURL+p.Sender.UserName, p.Sender.UserName))
|
||||||
|
|
|
@ -230,7 +230,11 @@ func GetMatrixPayload(p api.Payloader, event models.HookEventType, meta string)
|
||||||
case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
|
case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
|
||||||
return getMatrixIssuesPayload(p.(*api.IssuePayload), matrix)
|
return getMatrixIssuesPayload(p.(*api.IssuePayload), matrix)
|
||||||
case models.HookEventIssueComment, models.HookEventPullRequestComment:
|
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:
|
case models.HookEventPush:
|
||||||
return getMatrixPushPayload(p.(*api.PushPayload), matrix)
|
return getMatrixPushPayload(p.(*api.PushPayload), matrix)
|
||||||
case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
|
case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
|
||||||
|
|
|
@ -558,7 +558,11 @@ func GetMSTeamsPayload(p api.Payloader, event models.HookEventType, meta string)
|
||||||
case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
|
case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
|
||||||
return getMSTeamsIssuesPayload(p.(*api.IssuePayload))
|
return getMSTeamsIssuesPayload(p.(*api.IssuePayload))
|
||||||
case models.HookEventIssueComment, models.HookEventPullRequestComment:
|
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:
|
case models.HookEventPush:
|
||||||
return getMSTeamsPushPayload(p.(*api.PushPayload))
|
return getMSTeamsPushPayload(p.(*api.PushPayload))
|
||||||
case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
|
case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
|
||||||
|
|
|
@ -321,7 +321,11 @@ func GetSlackPayload(p api.Payloader, event models.HookEventType, meta string) (
|
||||||
case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
|
case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
|
||||||
return getSlackIssuesPayload(p.(*api.IssuePayload), slack)
|
return getSlackIssuesPayload(p.(*api.IssuePayload), slack)
|
||||||
case models.HookEventIssueComment, models.HookEventPullRequestComment:
|
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:
|
case models.HookEventPush:
|
||||||
return getSlackPushPayload(p.(*api.PushPayload), slack)
|
return getSlackPushPayload(p.(*api.PushPayload), slack)
|
||||||
case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
|
case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
|
||||||
|
|
|
@ -206,7 +206,11 @@ func GetTelegramPayload(p api.Payloader, event models.HookEventType, meta string
|
||||||
case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
|
case models.HookEventIssues, models.HookEventIssueAssign, models.HookEventIssueLabel, models.HookEventIssueMilestone:
|
||||||
return getTelegramIssuesPayload(p.(*api.IssuePayload))
|
return getTelegramIssuesPayload(p.(*api.IssuePayload))
|
||||||
case models.HookEventIssueComment, models.HookEventPullRequestComment:
|
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:
|
case models.HookEventPush:
|
||||||
return getTelegramPushPayload(p.(*api.PushPayload))
|
return getTelegramPushPayload(p.(*api.PushPayload))
|
||||||
case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
|
case models.HookEventPullRequest, models.HookEventPullRequestAssign, models.HookEventPullRequestLabel,
|
||||||
|
|
Reference in a new issue