module Slackr::Channel
Attributes
connection[RW]
Public Instance Methods
history(channel)
click to toggle source
# File lib/slackr/channel.rb, line 19 def history(channel) request = request_for(history_url(channel)) response = make_request(request) messages = response["messages"] while response["has_more"] do oldest_timestamp = oldest_message(response["messages"])["ts"] request = request_for(history_url(channel, oldest_timestamp)) response = make_request(request) messages += response["messages"] end response.merge("messages" => messages) end
init(connection)
click to toggle source
# File lib/slackr/channel.rb, line 9 def init(connection) @connection = connection return self end
list()
click to toggle source
# File lib/slackr/channel.rb, line 14 def list request = request_for(url_for('list')) make_request(request) end
Private Instance Methods
history_url(channel, timestamp=nil)
click to toggle source
# File lib/slackr/channel.rb, line 42 def history_url(channel, timestamp=nil) base = "#{url_for('history')}&channel=#{channel}&count=1000" return base unless timestamp "#{base}&latest=#{timestamp}" end
make_request(request)
click to toggle source
# File lib/slackr/channel.rb, line 48 def make_request(request) response = connection.http_request(request) if response.code != "200" raise Slackr::ServiceError, "Slack.com - #{response.code} - #{response.body}" end JSON.parse(response.body) end
oldest_message(messages)
click to toggle source
# File lib/slackr/channel.rb, line 56 def oldest_message(messages) messages.min_by { |message| message["ts"]} end
request_for(url)
click to toggle source
# File lib/slackr/channel.rb, line 38 def request_for(url) Net::HTTP::Get.new(url) end
url_for(action)
click to toggle source
# File lib/slackr/channel.rb, line 34 def url_for(action) "#{connection.base_url}/api/channels.#{action}?token=#{connection.token}" end