diff options
author | Kukovskii Vladimir <ura@dgtakano.co.jp> | 2018-06-24 19:35:35 +0900 |
---|---|---|
committer | Kukovskii Vladimir <ura@dgtakano.co.jp> | 2018-07-14 20:45:53 +0900 |
commit | cb77d939c919ac8ebf4288724febdf7bb8238399 (patch) | |
tree | 81dc12592d6cd144c4375dfabcc8c91071bbdb1f /app | |
parent | 07d9b036a9b7b3502238cac0fdb4980bfe02e128 (diff) | |
download | gitlab-ce-cb77d939c919ac8ebf4288724febdf7bb8238399.tar.gz |
Add Hangouts Chat service implementation
Diffstat (limited to 'app')
-rw-r--r-- | app/models/project_services/hangouts_chat_service.rb | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/app/models/project_services/hangouts_chat_service.rb b/app/models/project_services/hangouts_chat_service.rb index 99a6afcc11a..00e9b634dd1 100644 --- a/app/models/project_services/hangouts_chat_service.rb +++ b/app/models/project_services/hangouts_chat_service.rb @@ -1,3 +1,5 @@ +require 'hangouts_chat' + class HangoutsChatService < ChatNotificationService def title 'Hangouts Chat' @@ -38,4 +40,27 @@ class HangoutsChatService < ChatNotificationService { type: 'checkbox', name: 'notify_only_default_branch' } ] end + + private + + def notify(message, opts) + simple_text = compose_simple_message(message) + HangoutsChat::Sender.new(webhook).simple(simple_text) + end + + def compose_simple_message(message) + header = message.pretext + return header if message.attachments.empty? + + title = fetch_attachment_title(message.attachments.first) + body = message.attachments.first[:text] + [header, title, body].compact.join("\n") + end + + def fetch_attachment_title(attachment) + return nil if attachment[:title].nil? + return attachment[:title] if attachment[:title_link].nil? + + "<#{attachment[:title_link]}|#{attachment[:title]}>" + end end |