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
MAX_GEMS_PER_PAGE =

It has been determined by Rubygems API

30

Instance Method Summary collapse

Instance Method Details

#search(query, &post_hook) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/gem_search/request.rb', line 12

def search(query, &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)
    gems += results
    break if search_ended?(results.size)
  end
  gems
rescue Interrupt
  gems
end

#search_for_browse(gem) ⇒ Object



26
27
28
29
# File 'lib/gem_search/request.rb', line 26

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