class Slack::Messenger

Constants

VERSION

Attributes

endpoint[R]

Public Class Methods

new(webhook_url, options={}) click to toggle source
# File lib/slack-messenger.rb, line 16
def initialize webhook_url, options={}, &block
  @endpoint = URI.parse webhook_url

  config.http_client(options.delete(:http_client)) if options.key?(:http_client)
  config.defaults options
  config.instance_exec(&block) if block_given?

  middleware.set config.middleware
end

Public Instance Methods

config() click to toggle source
# File lib/slack-messenger.rb, line 26
def config
  @_config ||= Config.new
end
ping(message, options={}) click to toggle source
# File lib/slack-messenger.rb, line 30
def ping message, options={}
  if message.is_a?(Hash)
    options = message
  else
    options[:text] = message
  end

  post options
end
post(payload={}) click to toggle source
# File lib/slack-messenger.rb, line 40
def post payload={}
  params  = {}
  client  = payload.delete(:http_client) || config.http_client
  payload = config.defaults.merge(payload)

  params[:http_options] = payload.delete(:http_options) if payload.key?(:http_options)

  middleware.call(payload).map do |pld|
    params[:payload] = pld.to_json
    client.post endpoint, params
  end
end

Private Instance Methods

middleware() click to toggle source
# File lib/slack-messenger.rb, line 55
def middleware
  @middleware ||= PayloadMiddleware::Stack.new(self)
end