Class: VkCozy::BotPolling

Inherits:
Object
  • Object
show all
Defined in:
lib/vk_cozy/polling/bot_polling.rb

Instance Method Summary collapse

Constructor Details

#initialize(api, group_id = nil, wait = 25, rps_delay = 0) ⇒ BotPolling

Returns a new instance of BotPolling.



3
4
5
6
7
8
9
10
11
12
13
# File 'lib/vk_cozy/polling/bot_polling.rb', line 3

def initialize(api, group_id=nil, wait=25, rps_delay=0)
  @api = api
  if group_id.nil?
    @group_id = @api.request('groups.getById', {})['response'][0]['id']
  else
    @group_id = group_id
  end

  @rps_delay = rps_delay
  @stop = false
end

Instance Method Details

#get_event(server) ⇒ Object



19
20
21
22
23
# File 'lib/vk_cozy/polling/bot_polling.rb', line 19

def get_event(server)
  uri = URI.parse('%s?act=a_check&key=%s&ts=%s&wait=%s&rps_delay=%s' % [server['server'], server['key'], server['ts'], @wait, @rps_delay])
  http_response = Net::HTTP.get(uri)
  return JSON.parse(http_response)
end

#get_serverObject



15
16
17
# File 'lib/vk_cozy/polling/bot_polling.rb', line 15

def get_server
  return @api.request('groups.getLongPollServer', {:group_id => @group_id})['response']
end

#listenObject



25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/vk_cozy/polling/bot_polling.rb', line 25

def listen
  server = get_server
  until @stop do
    event = get_event(server)
    if not event['ts']
      server = get_server
      next
    end
    server['ts'] = event['ts']
    yield event
  end
end