class Fluent::SlackClient::Slackbot

Slack client for Slackbot Remote Control api.slack.com/slackbot

Public Class Methods

new(endpoint, https_proxy = nil) click to toggle source
Calls superclass method Fluent::SlackClient::Base::new
# File lib/fluent/plugin/slack_client.rb, line 161
def initialize(endpoint, https_proxy = nil)
  super
end

Public Instance Methods

api() click to toggle source
# File lib/fluent/plugin/slack_client.rb, line 165
def api
  @api ||= WebApi.new(nil, https_proxy)
end
post_message(params = {}, opts = {}) click to toggle source
# File lib/fluent/plugin/slack_client.rb, line 169
def post_message(params = {}, opts = {})
  raise ArgumentError, "channel parameter is required" unless params[:channel]
  with_channels_create(params, opts) do
    log.info { "out_slack: post_message #{filter_params(params)}" }
    post(slackbot_endpoint(params), params)
  end
end

Private Instance Methods

encode_body(params = {}) click to toggle source
# File lib/fluent/plugin/slack_client.rb, line 183
def encode_body(params = {})
  return params[:text]if params[:text]
  unless params[:attachments]
    raise ArgumentError, 'params[:text] or params[:attachments] is required'
  end
  # handle params[:attachments]
  attachment = Array(params[:attachments]).first # see only the first for now
  # {
  #   attachments: [{
  #     text: "HERE",
  #   }]
  # }
  text = attachment[:text]
  # {
  #   attachments: [{
  #     fields: [{
  #       title: "title",
  #       value: "HERE",
  #     }]
  #   }]
  # }
  if text.nil? and attachment[:fields]
    text = Array(attachment[:fields]).first[:value] # see only the first for now
  end
  text
end
response_check(res, params) click to toggle source
# File lib/fluent/plugin/slack_client.rb, line 210
def response_check(res, params)
  if res.body == 'channel_not_found'
    raise ChannelNotFoundError.new(res, params)
  elsif res.body != 'ok'
    raise Error.new(res, params)
  end
end
slackbot_endpoint(params) click to toggle source
# File lib/fluent/plugin/slack_client.rb, line 179
def slackbot_endpoint(params)
  endpoint.dup.tap {|e| e.query += "&channel=#{URI.encode(params[:channel])}" }
end