]> source.dussan.org Git - gitea.git/commitdiff
Add PR review webhook to Telegram (#9653) (#9655)
authorJohn Olheiser <42128690+jolheiser@users.noreply.github.com>
Wed, 8 Jan 2020 19:42:28 +0000 (13:42 -0600)
committerLauris BH <lauris@nix.lv>
Wed, 8 Jan 2020 19:42:28 +0000 (21:42 +0200)
Signed-off-by: jolheiser <john.olheiser@gmail.com>
Co-authored-by: Antoine GIRARD <sapk@users.noreply.github.com>
Co-authored-by: Antoine GIRARD <sapk@users.noreply.github.com>
modules/webhook/telegram.go

index 42adb40be28bfd9c1591918a2afd39565d19c1d5..47d54f7cb90b64f86c82f289f68fda856c3eaaae 100644 (file)
@@ -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: