class SlackExport::SlackClient

Constants

BASE_URL
CHANNEL_INFO
LIST_CHANNELS
LIST_MESSAGES
LIST_USERS

Attributes

channel[RW]
token[RW]

Public Class Methods

new(api_key, channel_name) click to toggle source
# File lib/slack_export/slack_client.rb, line 14
def initialize(api_key, channel_name)
  self.token = api_key
  self.channel = get_channel_id(channel_name)
end

Public Instance Methods

get_channels() click to toggle source
# File lib/slack_export/slack_client.rb, line 24
def get_channels
  response = post_form(LIST_CHANNELS)
  response["groups"]
end
get_messages() click to toggle source
# File lib/slack_export/slack_client.rb, line 29
def get_messages()
  responses = []
  latest = latest.to_i #pages backward, so keep track of most recent message pulled
  oldest = oldest.to_i
  loop do
    responses << post_form(LIST_MESSAGES, { channel: channel, latest: latest, oldest: oldest, count: 1000})
    latest = responses.last["messages"].last["ts"]
    break unless responses.last["has_more"]
  end

  responses.map {|r| r["messages"]}.flatten
end
get_users() click to toggle source
# File lib/slack_export/slack_client.rb, line 19
def get_users
  response = post_form(LIST_USERS)
  response["members"]
end

Private Instance Methods

get_channel_id(channel_name) click to toggle source
# File lib/slack_export/slack_client.rb, line 44
def get_channel_id(channel_name)
  get_channels.select {|g| g["name"] == channel_name}.first["id"]
end
post_form(action, form_values={}) click to toggle source
# File lib/slack_export/slack_client.rb, line 48
def post_form(action, form_values={})
  response = RestClient::Request.execute(
    url: "#{BASE_URL}#{action}",
    method: :post,
    payload: form_values.merge(token: self.token)
  )

  JSON.parse(response)
end