diff options
author | Tiago Botelho <tiagonbotelho@hotmail.com> | 2017-04-03 16:37:23 +0100 |
---|---|---|
committer | Tiago Botelho <tiagonbotelho@hotmail.com> | 2017-04-05 13:57:11 +0100 |
commit | efe2d96a90cb5e2cc0c368294a021423aeeaeabe (patch) | |
tree | 95c67a48cfa7e78011da64da1942202d3b4a7a4c /app/models/project_services/microsoft_teams_service.rb | |
parent | d4349ba6c4960f50dce7b0beec5f309894dbada9 (diff) | |
download | gitlab-ce-efe2d96a90cb5e2cc0c368294a021423aeeaeabe.tar.gz |
adds initial microsoft teams integration
Diffstat (limited to 'app/models/project_services/microsoft_teams_service.rb')
-rw-r--r-- | app/models/project_services/microsoft_teams_service.rb | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/app/models/project_services/microsoft_teams_service.rb b/app/models/project_services/microsoft_teams_service.rb new file mode 100644 index 00000000000..c0a3d2c0025 --- /dev/null +++ b/app/models/project_services/microsoft_teams_service.rb @@ -0,0 +1,66 @@ +class MicrosoftTeamsService < ChatNotificationService + def title + 'Microsoft Teams Notification' + end + + def description + 'Receive event notifications in Microsoft Team' + end + + def self.to_param + 'microsoft_teams' + end + + #TODO: Setup the description accordingly + def help + 'This service sends notifications about projects events to Microsoft Teams channels.<br /> + To set up this service: + <ol> + <li><a href="https://msdn.microsoft.com/en-us/microsoft-teams/connectors">Getting started with 365 Office Connectors For Microsoft Teams</a>.</li> + <li>Paste the <strong>Webhook URL</strong> into the field below.</li> + <li>Select events below to enable notifications.</li> + </ol>' + end + + def default_channel_placeholder + "Channel name (e.g. general)" + end + + def webhook_placeholder + 'https://outlook.office.com/webhook/…' + end + + def event_field(event) + end + + def default_fields + [ + { type: 'text', name: 'webhook', placeholder: "e.g. #{webhook_placeholder}" }, + { type: 'checkbox', name: 'notify_only_broken_pipelines' }, + { type: 'checkbox', name: 'notify_only_default_branch' }, + ] + end + + def execute(data) + return unless supported_events.include?(data[:object_kind]) + return unless webhook.present? + + object_kind = data[:object_kind] + + data = data.merge( + project_url: project_url, + project_name: project_name, + format: false + ) + + message = get_message(object_kind, data) + + return false unless message + + MicrosoftTeams::Notifier.new(webhook).ping({ + title: message.project_name, + activity: message.activity, + attachments: message.attachments, + }) + end +end |