mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	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:
		| @@ -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 New Issue
	
	Block a user