summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authorKukovskii Vladimir <ura@dgtakano.co.jp>2018-06-24 19:35:35 +0900
committerKukovskii Vladimir <ura@dgtakano.co.jp>2018-07-14 20:45:53 +0900
commitcb77d939c919ac8ebf4288724febdf7bb8238399 (patch)
tree81dc12592d6cd144c4375dfabcc8c91071bbdb1f /app/models
parent07d9b036a9b7b3502238cac0fdb4980bfe02e128 (diff)
downloadgitlab-ce-cb77d939c919ac8ebf4288724febdf7bb8238399.tar.gz
Add Hangouts Chat service implementation
Diffstat (limited to 'app/models')
-rw-r--r--app/models/project_services/hangouts_chat_service.rb25
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