class CrxUnpack

Constants

VERSION

Attributes

magic[R]
public_key[R]
public_key_length[R]
signature[R]
signature_length[R]
version[R]
zip[R]

Public Class Methods

unpack(data) click to toggle source
# File lib/crx_unpack.rb, line 61
def unpack(data)
  new.unpack(data)
end
unpack_contents(data, dest, leave_zip_file=false) click to toggle source
# File lib/crx_unpack.rb, line 73
def unpack_contents(data, dest, leave_zip_file=false)
  new.unpack_contents(data, dest, leave_zip_file)
end
unpack_contents_from_file(file, dest, leave_zip_file=false) click to toggle source
# File lib/crx_unpack.rb, line 81
def unpack_contents_from_file(file, dest, leave_zip_file=false)
  new.unpack_contents_from_file(file, dest, leave_zip_file)
end
unpack_contents_from_io(io, dest, leave_zip_file=false) click to toggle source
# File lib/crx_unpack.rb, line 77
def unpack_contents_from_io(io, dest, leave_zip_file=false)
  new.unpack_contents_from_io(io, dest, leave_zip_file)
end
unpack_from_file(file) click to toggle source
# File lib/crx_unpack.rb, line 69
def unpack_from_file(file)
  new.unpack_from_file(file)
end
unpack_from_io(io) click to toggle source
# File lib/crx_unpack.rb, line 65
def unpack_from_io(io)
  new.unpack_from_io(io)
end

Public Instance Methods

unpack(data) click to toggle source
# File lib/crx_unpack.rb, line 8
def unpack(data)
  @magic = data.slice!(0, 4)
  @version = data.slice!(0, 4)
  @public_key_length = data.slice!(0, 4).unpack("i*")[0]
  @signature_length = data.slice!(0, 4).unpack("i*")[0]
  @public_key = data.slice!(0, public_key_length)
  @signature = data.slice!(0, signature_length)
  @zip = data
  self
end
unpack_contents(data, dest, leave_zip_file=false) click to toggle source
# File lib/crx_unpack.rb, line 28
def unpack_contents(data, dest, leave_zip_file=false)
  unpack(data)
  dest = File.expand_path(dest)
  unless Dir.exists?(dest)
    Dir.mkdir(dest)
  end

  Dir.chdir(dest) do
    zip_file = 'extension.zip'
    open(zip_file, 'wb'){ |f| f.write zip }

    $stdout.reopen('/dev/null') # Ignore `Invalid date/time in zip entry' warning
    zf = Zip::ZipFile.new(zip_file)
    zf.each do |entry|
      zf.extract(entry, entry.to_s)
    end
    $stdout.flush
    $stdout.reopen(STDERR)

    File.unlink(zip_file) unless leave_zip_file
  end
end
unpack_contents_from_file(file, dest, leave_zip_file=false) click to toggle source
# File lib/crx_unpack.rb, line 56
def unpack_contents_from_file(file, dest, leave_zip_file=false)
  unpack_contents(open(file, 'rb').read, dest, leave_zip_file)
end
unpack_contents_from_io(io, dest, leave_zip_file=false) click to toggle source
# File lib/crx_unpack.rb, line 51
def unpack_contents_from_io(io, dest, leave_zip_file=false)
  io.binmode? || io.binmode
  unpack_contents(io.read, dest, leave_zip_file)
end
unpack_from_file(file) click to toggle source
# File lib/crx_unpack.rb, line 24
def unpack_from_file(file)
  unpack(open(file, 'rb').read)
end
unpack_from_io(io) click to toggle source
# File lib/crx_unpack.rb, line 19
def unpack_from_io(io)
  io.binmode? || io.binmode
  unpack(io.read)
end