Module: VoteSmart::ParallelQueries

Defined in:
lib/vote_smart/common.rb

Instance Method Summary collapse

Instance Method Details

#request(api_method, params = {}) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/vote_smart/common.rb', line 11

def request(api_method, params = {})
  raise "on_complete block required" unless block_given?

  url = construct_url api_method, params

  new_request = Typhoeus::Request.new(url)
  new_request.on_complete do |response|
    next if response.body.size < 2
    json = JSON.parse(response.body)

    if json['error'] and json['error']['errorMessage'] == 'Authorization failed'
      raise RequestFailed.new(json['error']['errorMessage'])
    end

    yield json
  end
  session.queue new_request
end

#runObject



30
31
32
# File 'lib/vote_smart/common.rb', line 30

def run
  session.run
end

#sessionObject



7
8
9
# File 'lib/vote_smart/common.rb', line 7

def session
  @session ||= Typhoeus::Hydra.new(:max_concurrency => 20)
end