Class: GemfileUtils::Parser::RubyGems

Inherits:
Object
  • Object
show all
Defined in:
lib/gemfile_utils/parser/ruby_gems.rb

Constant Summary collapse

API_URL =
'https://rubygems.org/api/v1/gems/'.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(gems) ⇒ RubyGems

Returns a new instance of RubyGems.



12
13
14
15
16
17
# 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

Instance Attribute Details

#connectionObject (readonly)

Returns the value of attribute connection.



10
11
12
# File 'lib/gemfile_utils/parser/ruby_gems.rb', line 10

def connection
  @connection
end

#gemsObject (readonly)

Returns the value of attribute gems.



10
11
12
# File 'lib/gemfile_utils/parser/ruby_gems.rb', line 10

def gems
  @gems
end

#responsesObject (readonly)

Returns the value of attribute responses.



10
11
12
# File 'lib/gemfile_utils/parser/ruby_gems.rb', line 10

def responses
  @responses
end

Instance Method Details

#info(gem_name) ⇒ Object



32
33
34
# 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!Object



19
20
21
22
23
24
25
26
27
28
29
30
# 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