summaryrefslogtreecommitdiff
path: root/lib/rubygems/dependency_resolver.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rubygems/dependency_resolver.rb')
-rw-r--r--lib/rubygems/dependency_resolver.rb19
1 files changed, 15 insertions, 4 deletions
diff --git a/lib/rubygems/dependency_resolver.rb b/lib/rubygems/dependency_resolver.rb
index b841674d43..2c651aff2e 100644
--- a/lib/rubygems/dependency_resolver.rb
+++ b/lib/rubygems/dependency_resolver.rb
@@ -69,6 +69,8 @@ module Gem
# and dependencies.
#
class APISpecification
+ attr_reader :set # :nodoc:
+
def initialize(set, api_data)
@set = set
@name = api_data[:name]
@@ -80,6 +82,14 @@ module Gem
attr_reader :name, :version, :dependencies
+ def == other # :nodoc:
+ self.class === other and
+ @set == other.set and
+ @name == other.name and
+ @version == other.version and
+ @dependencies == other.dependencies
+ end
+
def full_name
"#{@name}-#{@version}"
end
@@ -91,6 +101,7 @@ module Gem
class APISet
def initialize
@data = Hash.new { |h,k| h[k] = [] }
+ @dep_uri = URI 'https://rubygems.org/api/v1/dependencies'
end
# Return data for all versions of the gem +name+.
@@ -100,8 +111,8 @@ module Gem
return @data[name]
end
- u = URI.parse "http://rubygems.org/api/v1/dependencies?gems=#{name}"
- str = Net::HTTP.get(u)
+ uri = @dep_uri + "?gems=#{name}"
+ str = Gem::RemoteFetcher.fetcher.fetch_path uri
Marshal.load(str).each do |ver|
@data[ver[:name]] << ver
@@ -134,8 +145,8 @@ module Gem
return if needed.empty?
- u = URI.parse "http://rubygems.org/api/v1/dependencies?gems=#{needed.join ','}"
- str = Net::HTTP.get(u)
+ uri = @dep_uri + "?gems=#{needed.sort.join ','}"
+ str = Gem::RemoteFetcher.fetcher.fetch_path uri
Marshal.load(str).each do |ver|
@data[ver[:name]] << ver