class ErrandBoy::Gateway::Slack

Public Class Methods

new(request) click to toggle source
# File lib/errand_boy/gateway/slack.rb, line 7
def initialize(request)
  @request = request
end

Public Instance Methods

call() click to toggle source
# File lib/errand_boy/gateway/slack.rb, line 11
def call
  send(@request.action)
rescue NoMethodError
  raise NoActionError, "#{@request.action}: action not found."
end
invite() click to toggle source
# File lib/errand_boy/gateway/slack.rb, line 17
def invite
  response = connect.post 'api/users.admin.invite', params
  result = JSON.parse response.body
  unless result['ok']
    @processed = true if result['error'] == 'already_invited'
    raise SlackInviteMissingError, result['error'] unless processed?
  end
end
processed?() click to toggle source
# File lib/errand_boy/gateway/slack.rb, line 34
def processed?
  @processed
end
team() click to toggle source
# File lib/errand_boy/gateway/slack.rb, line 26
def team
  @request.destination['team']
end
url() click to toggle source
# File lib/errand_boy/gateway/slack.rb, line 30
def url
  "https://#{team}.slack.com/"
end

Private Instance Methods

connect() click to toggle source
# File lib/errand_boy/gateway/slack.rb, line 40
def connect
  Faraday.new(url: url) do |faraday|
    faraday.request :url_encoded
    # faraday.response :logger
    faraday.adapter Faraday.default_adapter
  end
end
params() click to toggle source
# File lib/errand_boy/gateway/slack.rb, line 48
def params
  {
    email: @request.register['email'],
    token: ErrandBoy.slack_access_token,
    set_active: true
  }
end