Class: VkCozy::UserPolling

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

Instance Method Summary collapse

Constructor Details

#initialize(api = nil, user_id = nil, mode = 234, wait = 25, rps_delay = 0, error_handler = nil) ⇒ UserPolling

Returns a new instance of UserPolling.



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

def initialize(api=nil, user_id=nil, mode=234, wait=25, rps_delay=0, error_handler=nil)
  @api = api
  if user_id.nil?
    @user_id = @api.request('users.get', {})['response'][0]['id']
  else
    @user_id = user_id
  end
  @mode = mode 
  @wait = wait
  @rps_delay = rps_delay
  @stop = false
end

Instance Method Details

#get_event(server) ⇒ Object



16
17
18
19
20
# File 'lib/vk_cozy/polling/user_polling.rb', line 16

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

#get_serverObject



22
23
24
# File 'lib/vk_cozy/polling/user_polling.rb', line 22

def get_server
  return @api.request('messages.getLongPollServer', {})['response']
end

#listenObject



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

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