mirror of
https://github.com/wahyd4/gitlabhq.git
synced 2026-08-27 05:26:05 +10:00
per changes with slack, they’re now using “static” web hook urls that describe the team & service with IDs that don’t change if the team or service name change. their recommendation is to use the raw webhook_url instead of building it out of components to allow more flexibility this should also prevent issues cropping up with mistakes in how the urls are parsed
59 lines
1.1 KiB
Ruby
59 lines
1.1 KiB
Ruby
# == Schema Information
|
|
#
|
|
# Table name: services
|
|
#
|
|
# id :integer not null, primary key
|
|
# type :string(255)
|
|
# title :string(255)
|
|
# project_id :integer not null
|
|
# created_at :datetime
|
|
# updated_at :datetime
|
|
# active :boolean default(FALSE), not null
|
|
# properties :text
|
|
#
|
|
|
|
class SlackService < Service
|
|
prop_accessor :webhook
|
|
validates :webhook, presence: true, if: :activated?
|
|
|
|
def title
|
|
'Slack'
|
|
end
|
|
|
|
def description
|
|
'A team communication tool for the 21st century'
|
|
end
|
|
|
|
def to_param
|
|
'slack'
|
|
end
|
|
|
|
def fields
|
|
[
|
|
{ type: 'text', name: 'webhook', placeholder: 'https://hooks.slack.com/services/...' }
|
|
]
|
|
end
|
|
|
|
def execute(push_data)
|
|
return unless webhook.present?
|
|
|
|
message = SlackMessage.new(push_data.merge(
|
|
project_url: project_url,
|
|
project_name: project_name
|
|
))
|
|
|
|
notifier = Slack::Notifier.new(webhook)
|
|
notifier.ping(message.pretext, attachments: message.attachments)
|
|
end
|
|
|
|
private
|
|
|
|
def project_name
|
|
project.name_with_namespace.gsub(/\s/, '')
|
|
end
|
|
|
|
def project_url
|
|
project.web_url
|
|
end
|
|
end
|