From f8dcc5f9f8e389218f1908ad9d5fe2044102abf1 Mon Sep 17 00:00:00 2001 From: John Olheiser <42128690+jolheiser@users.noreply.github.com> Date: Wed, 8 Jan 2020 11:45:24 -0600 Subject: [PATCH] Add PR review webhook to Telegram (#9653) Signed-off-by: jolheiser Co-authored-by: Antoine GIRARD --- modules/webhook/telegram.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/modules/webhook/telegram.go b/modules/webhook/telegram.go index 42adb40be..47d54f7cb 100644 --- a/modules/webhook/telegram.go +++ b/modules/webhook/telegram.go @@ -148,6 +148,25 @@ func getTelegramPullRequestPayload(p *api.PullRequestPayload) (*TelegramPayload, }, nil } +func getTelegramPullRequestApprovalPayload(p *api.PullRequestPayload, event models.HookEventType) (*TelegramPayload, error) { + var text, attachmentText string + switch p.Action { + case api.HookIssueSynchronized: + action, err := parseHookPullRequestEventType(event) + if err != nil { + return nil, err + } + + text = fmt.Sprintf("[%s] Pull request review %s: #%d %s", p.Repository.FullName, action, p.Index, p.PullRequest.Title) + attachmentText = p.Review.Content + + } + + return &TelegramPayload{ + Message: text + "\n" + attachmentText, + }, nil +} + func getTelegramRepositoryPayload(p *api.RepositoryPayload) (*TelegramPayload, error) { var title string switch p.Action { @@ -192,6 +211,8 @@ func GetTelegramPayload(p api.Payloader, event models.HookEventType, meta string return getTelegramPushPayload(p.(*api.PushPayload)) case models.HookEventPullRequest: return getTelegramPullRequestPayload(p.(*api.PullRequestPayload)) + case models.HookEventPullRequestRejected, models.HookEventPullRequestApproved, models.HookEventPullRequestComment: + return getTelegramPullRequestApprovalPayload(p.(*api.PullRequestPayload), event) case models.HookEventRepository: return getTelegramRepositoryPayload(p.(*api.RepositoryPayload)) case models.HookEventRelease: