Sha256: 7fc66182e046dd662d1a6df17419a398203d6c8e1a253198c2a80d00b0fef437
Contents?: true
Size: 1.37 KB
Versions: 2
Compression:
Stored size: 1.37 KB
Contents
class AnonClient attr_accessor :rooms attr_reader :server def initialize(bot, server, room_id, poll_frequency: 2) @poll_frequency = poll_frequency @bot = bot @dead = false @server = server join_room room_id start_loop end def join_room(room_id) @fkey = Nokogiri::HTML(open("https://chat.#{server}.com/rooms/#{room_id}").read).search("//input[@name='fkey']").attribute("value") events_json = Net::HTTP.post_form(URI("https://chat.#{@server}.com/chats/#{room_id}/events"), fkey: @fkey, since: 0, mode: "Messages", msgCount: 100).body events = JSON.parse(events_json)["events"] last_event_time = events.max_by { |event| event['time_stamp'] }['time_stamp'] @rooms = {"r#{room_id}" => last_event_time} end def kill @dead = true @thread.join end private def start_loop @thread = Thread.new do until @dead response_json = Net::HTTP.post_form(URI("https://chat.#{@server}.com/events"), {fkey: @fkey}.merge(@rooms)) response = JSON.parse(response_json.body) response.each do |room, data| @rooms[room] = data["t"] unless data["t"].nil? end @bot.handle(response) sleep @poll_frequency end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
chatx-0.0.1 | lib/chatx/polling.rb |
chatx-0.0.0.pre.pre3 | lib/chatx/polling.rb |