class GemfileUtils::Parser::RubyGems

Constants

API_URL

Attributes

connection[R]
gems[R]
responses[R]

Public Class Methods

new(gems) click to toggle source
# File lib/gemfile_utils/parser/ruby_gems.rb, line 12
def initialize(gems)
  @gems = gems
  @connection = Faraday.new(url: API_URL) do |faraday|
    faraday.adapter :typhoeus
  end
end

Public Instance Methods

info(gem_name) click to toggle source
# File lib/gemfile_utils/parser/ruby_gems.rb, line 32
def info(gem_name)
  responses.has_key?(gem_name) ? JSON.parse(responses[gem_name].body) : {}
end
request!() click to toggle source
# File lib/gemfile_utils/parser/ruby_gems.rb, line 19
def request!
  #
  @responses = {}

  connection.in_parallel(Typhoeus::Hydra.new(max_concurrency: 10)) do
    gems.map do |gem_name|
      @responses[gem_name] = connection.get("#{gem_name}")
    end
  end
  #keep only successful responses
  @responses.reject! { |_, response| response.status >= 400 }
end