class Goodcheck::Unarchiver

Attributes

file_filter[R]

Public Class Methods

new(file_filter: ->(_filename) { true } click to toggle source
# File lib/goodcheck/unarchiver.rb, line 5
def initialize(file_filter: ->(_filename) { true })
  @file_filter = file_filter
end

Public Instance Methods

tar_gz(content) { |read, full_name| ... } click to toggle source
# File lib/goodcheck/unarchiver.rb, line 15
def tar_gz(content)
  require "rubygems/package"

  Gem::Package::TarReader.new(StringIO.new(gz(content))) do |tar_reader|
    tar_reader.each do |file|
      if file.file? && file_filter.call(file.full_name)
        yield file.read, file.full_name
      end
    end
  end
end
tar_gz?(filename) click to toggle source
# File lib/goodcheck/unarchiver.rb, line 9
def tar_gz?(filename)
  name = filename.to_s.downcase
  ext = ".tar.gz"
  name.end_with?(ext) && name != ext
end

Private Instance Methods

gz(content) click to toggle source
# File lib/goodcheck/unarchiver.rb, line 29
def gz(content)
  require "zlib"

  io = Zlib::GzipReader.new(StringIO.new(content))
  begin
    io.read
  ensure
    io.close
  end
end