Class: GemSearch::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/gem_search/request.rb

Constant Summary collapse

SEARCH_API =
"#{RUBYGEMS_URL}/api/v1/search.json?query=%s&page=%d"
GEM_API =
"#{RUBYGEMS_URL}/api/v1/gems/%s.json"
MAX_REQUEST_COUNT =
20

Instance Method Summary collapse

Instance Method Details

#search(query, use_exact_match = false, &post_hook) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/gem_search/request.rb', line 11

def search(query, use_exact_match = false, &post_hook)
  gems = []
  (1..MAX_REQUEST_COUNT).each do |n|
    post_hook.call if post_hook
    url = SEARCH_API % [query, n]
    results = request_ruby_gems_api(url)
    if use_exact_match
      matched_result = extract_exact_match(query, results)
      if matched_result
        gems << matched_result
        break
      end
    else
      gems += results
    end
    break if results.size.zero?
  end
  gems
rescue Interrupt
  gems
end

#search_for_browse(gem) ⇒ Object



33
34
35
36
# File 'lib/gem_search/request.rb', line 33

def search_for_browse(gem)
  api_url = GEM_API % gem
  request_ruby_gems_api(api_url)
end