class Bundler::Fetcher

def specs(gem_names, source)

return the specs in the bundler format as an index
def specs(gem_names, source)
  index = Index.new
  if gem_names && use_api
    specs = fetch_remote_specs(gem_names)
  end
  if specs.nil?
    # API errors mean we should treat this as a non-API source
    @use_api = false
    specs = Bundler::Retry.new("source fetch", AUTH_ERRORS).attempts do
      fetch_all_remote_specs
    end
  end
  specs[@remote_uri].each do |name, version, platform, dependencies|
    next if name == 'bundler'
    spec = nil
    if dependencies
      spec = EndpointSpecification.new(name, version, platform, dependencies)
    else
      spec = RemoteSpecification.new(name, version, platform, self)
    end
    spec.source = source
    spec.source_uri = @remote_uri
    index << spec
  end
  index
rescue CertificateFailureError => e
  Bundler.ui.info "" if gem_names && use_api # newline after dots
  raise e
end