Sha256: 5ef07ff01035914498889eb7476d726cfe7c25c45e3d7379bae944335b64d36a

Contents?: true

Size: 1.41 KB

Versions: 47

Compression:

Stored size: 1.41 KB

Contents

class Lambdagem::Exist < Lambdagem::Base
  def initialize(options)
    @options = options
  end

  # We check all the availability before even downloading so we can provide a
  # full list of gems they might want to research all at once instead of incrementally
  #
  # Examples:
  #
  #   check(single_gem)
  #   check(list, of, gems)
  def check(*gem_names)
    gem_names = gem_names.flatten
    exists = gem_names.inject({}) do |hash, gem_name|
      exist = url_exists?(gem_url(gem_name))
      hash[gem_name] = exist
      hash.merge(hash)
    end

    exists.values.all? {|v| v } # all_exist
  end

  # Example url:
  #   https://gems.lambdagems.com/gems/2.5.0/byebug/byebug-9.1.0-x86_64-linux.tgz
  def url_exists?(url)
    url = URI.parse(url)
    req = Net::HTTP.new(url.host, url.port).tap do |http|
      http.use_ssl = true
    end
    res = req.request_head(url.path)
    res.code == "200"
  rescue SocketError, OpenURI::HTTPError
    false
  end

  def lambdagems_url
    s3_bucket = @options[:s3] || "lambdagems"
    s3_url = "https://s3.amazonaws.com/#{s3_bucket}"
    @options[:lambdagems_url] || s3_url
  end

  # gem_name: byebug-9.1.0
  # Example url:
  #   https://gems.lambdagems.com/gems/2.5.0/byebug/byebug-9.1.0-x86_64-linux.tgz
  def gem_url(gem_name)
    folder = gem_name.gsub(/-(\d+\.\d+\.\d+.*)/,'') # folder: byebug
    "#{lambdagems_url}/gems/#{jets_ruby_version}/#{folder}/#{gem_name}-x86_64-linux.tgz"
  end
end

Version data entries

47 entries across 47 versions & 1 rubygems

Version Path
jets-1.0.1 vendor/lambdagem/lib/lambdagem/exist.rb
jets-1.0.0 vendor/lambdagem/lib/lambdagem/exist.rb
jets-0.10.4 vendor/lambdagem/lib/lambdagem/exist.rb
jets-0.10.3 vendor/lambdagem/lib/lambdagem/exist.rb
jets-0.10.2 vendor/lambdagem/lib/lambdagem/exist.rb
jets-0.10.1 vendor/lambdagem/lib/lambdagem/exist.rb
jets-0.10.0 vendor/lambdagem/lib/lambdagem/exist.rb
jets-0.9.2 vendor/lambdagem/lib/lambdagem/exist.rb
jets-0.9.1 vendor/lambdagem/lib/lambdagem/exist.rb
jets-0.9.0 vendor/lambdagem/lib/lambdagem/exist.rb
jets-0.8.18 vendor/lambdagem/lib/lambdagem/exist.rb
jets-0.8.17 vendor/lambdagem/lib/lambdagem/exist.rb
jets-0.8.15 vendor/lambdagem/lib/lambdagem/exist.rb
jets-0.8.14 vendor/lambdagem/lib/lambdagem/exist.rb
jets-0.8.13 vendor/lambdagem/lib/lambdagem/exist.rb
jets-0.8.12 vendor/lambdagem/lib/lambdagem/exist.rb
jets-0.8.11 vendor/lambdagem/lib/lambdagem/exist.rb
jets-0.8.10 vendor/lambdagem/lib/lambdagem/exist.rb
jets-0.8.9 vendor/lambdagem/lib/lambdagem/exist.rb
jets-0.8.8 vendor/lambdagem/lib/lambdagem/exist.rb