module Slatan::Mouth

send and receive message to use Slack API

Public Class Methods

send(category, method, msg) click to toggle source
# File lib/slatan/mouth.rb, line 45
def send(category, method, msg)
  base_url = Spirit.slack_api_url

  msg = {
    as_user: true,
    token: Spirit.slack_token
  }.merge(msg)

  uri = URI.parse("#{base_url}/#{category}.#{method}?#{URI.encode_www_form(msg)}")

  Buttocks.debug("sent request: #{uri.request_uri}")

  request = Net::HTTP::Post.new(uri.request_uri, {
    'Content-Type' =>'application/json'
  })
  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
  response = http.start do |h|
    h.request(request)
  end

  body = JSON.parse(response.try(:body) || '{"ok":false, "error": " request body is empty."}', symbolize_names: true)
  Buttocks.debug("received response: #{body}")
  body
end