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