class Slackert::Alerter

Slack client responsible for sending composed Slack messages @param [String] Slack incoming webhook URL to a particular channel

Public Class Methods

new(webhook_url) click to toggle source
# File lib/slackert/alerter.rb, line 12
def initialize(webhook_url)
  @uri = URI.parse(webhook_url)
  @https = configure_https
end

Public Instance Methods

debug(content) click to toggle source

Sends a debug Slack message if logging level is set at Level::DEBUG @param [Hash] Slack message

# File lib/slackert/alerter.rb, line 20
def debug(content)
  return if Slackert.level < Level::DEBUG

  post_to_slack(content)
end
error(content) click to toggle source

Sends an error Slack message @param [Hash] Slack message

# File lib/slackert/alerter.rb, line 38
def error(content)
  post_to_slack(content)
end
info(content) click to toggle source

Sends an info Slack message if loggin level is set at Level::INFO or lower @param [Hash] Slack message

# File lib/slackert/alerter.rb, line 29
def info(content)
  return if Slackert.level < Level::INFO

  post_to_slack(content)
end

Private Instance Methods

base_post_req() click to toggle source
# File lib/slackert/alerter.rb, line 62
def base_post_req
  req = Net::HTTP::Post.new(@uri)
  req['Content-type'] = 'application/json'
  req
end
configure_https() click to toggle source
# File lib/slackert/alerter.rb, line 44
def configure_https
  https = Net::HTTP.new(@uri.host, @uri.port)
  https.use_ssl = true
  https
end
post_to_slack(content) click to toggle source
# File lib/slackert/alerter.rb, line 50
def post_to_slack(content)
  raise 'Message content cannot be empty.' if content.empty?

  req = base_post_req
  req.body = content.to_json
  res = @https.request(req)

  if res.code != '200'
    puts "Slackert::Slack message sending unsuccesful (Code: #{res.code}, Message: #{res.read_body})"
  end
end