class PuppetWebhook::Chatops::Slack

Sets up Slack object that will send notifications to Slack via a webhook.

Public Class Methods

new(channel, url, user, message, options = {}) click to toggle source
# File lib/plugins/chatops/slack.rb, line 7
def initialize(channel, url, user, message, options = {})
  @channel = channel
  @url = url
  @user = user
  @message = message
  @options = options
end

Public Instance Methods

notify() click to toggle source
# File lib/plugins/chatops/slack.rb, line 15
def notify
  notifier = ::Slack::Notifier.new @url, http_options: @options[:http_options]

  target = if @message[:branch]
             @message[:branch]
           elsif @message[:module]
             @message[:module]
           end

  msg = format_message(target)

  notifier.post text: msg[:fallback],
                channel: @channel,
                username: @user,
                icon_emoji: @options[:icon_emoji],
                attachments: [msg]
end

Private Instance Methods

format_message(target) click to toggle source
# File lib/plugins/chatops/slack.rb, line 35
def format_message(target)
  message = {
    author: 'r10k for Puppet',
    title: "r10k deployment of Puppet environment #{target}"
  }

  case @message[:status_code]
  when 202
    message.merge!(
      color: 'good',
      text: "Successfully started deployment of #{target}",
      fallback: "Successfully started deployment of #{target}"
    )
  when 500
    message.merge!(
      color: 'bad',
      text: "Failed to deploy #{target}",
      fallback: "Failed to deploy #{target}"
    )
  end

  message
end