class Blondie::Checker

Attributes

urls[R]

Public Class Methods

new(urls) click to toggle source
# File lib/blondie/checker.rb, line 11
def initialize(urls)
  @urls = urls
  @extensions = []
  @gems_with_extensions = []
end

Public Instance Methods

extensions() click to toggle source
# File lib/blondie/checker.rb, line 22
def extensions
  find_extensions if @extensions.empty?
  @extensions
end
gems_with_extensions() click to toggle source
# File lib/blondie/checker.rb, line 17
def gems_with_extensions
  find_extensions if @gems_with_extensions.empty?
  @gems_with_extensions
end

Private Instance Methods

check_metadata(metadata, gem_name) click to toggle source
# File lib/blondie/checker.rb, line 43
def check_metadata(metadata, gem_name)
  c_extensions = Zlib::GzipReader.open(metadata) do |gz|
    YAML.load(gz.read)
   end.extensions

   if !c_extensions.empty?
     @extensions += c_extensions
     @gems_with_extensions << gem_name
   end
end
create_tempfile(url, directory, filename) click to toggle source
# File lib/blondie/checker.rb, line 54
def create_tempfile(url, directory, filename)
  File.open("#{directory}/#{filename}", "w") do |f|
    f.write(URI.open(url).read)
  end
end
find_extensions() click to toggle source
# File lib/blondie/checker.rb, line 29
def find_extensions
  Dir.mktmpdir do |directory|
    urls.each do |gem_name, url|
      filename = url.split("/").last
      create_tempfile(url, directory, filename)

      Minitar.unpack("#{directory}/#{filename}", "#{directory}/gem_tar")

      metadata = "#{directory}/gem_tar/metadata.gz"
      check_metadata(metadata, gem_name)
    end
  end
end