Class: GemSearch::Executor

Inherits:
Object
  • Object
show all
Includes:
Rendering, Utils::SystemUtil
Defined in:
lib/gem_search/executor.rb

Constant Summary collapse

BASE_URL =
'https://rubygems.org'
SEARCH_API =
"#{BASE_URL}/api/v1/search.json?query=%s&page=%d"
GEM_API =
"#{BASE_URL}/api/v1/gems/%s.json"
GEM_URL =
"#{BASE_URL}/gems/%s"
MAX_REQUEST_COUNT =
20
MAX_GEMS_PER_PAGE =

It has been determined by Github API

30

Constants included from Rendering

Rendering::DEFAULT_RULED_LINE_SIZE

Instance Method Summary collapse

Methods included from Utils::SystemUtil

#browser_open, #osx?, #which

Methods included from Rendering

included, #render

Instance Method Details

#browse(gem) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/gem_search/executor.rb', line 28

def browse(gem)
  return unless gem
  api_url = GEM_API % gem
  result = request_ruby_gems_api(api_url)
  url = result['homepage_uri']
  if url.nil? || url.empty?
    url = GEM_URL % gem
  end
  puts "Opening #{url}"
  browser_open(url)
end

#search(query, opts) ⇒ Object



18
19
20
21
22
23
24
25
26
# File 'lib/gem_search/executor.rb', line 18

def search(query, opts)
  return unless query
  print 'Searching '
  gems = search_gems(query)
  puts
  fail GemSearch::LibraryNotFound, 'We did not find results.' if gems.size.zero?
  gems_sort!(gems, opts[:sort])
  Executor.render(gems, opts[:detail])
end