cartodb-4.42/lib/in_mem_zipper.rb
2024-04-06 05:25:13 +00:00

29 lines
598 B
Ruby

require 'zip'
module InMemZipper
module_function
def zip(entries)
zipstream = Zip::OutputStream.write_buffer do |zio|
entries.each do |name, contents|
if contents.present?
zio.put_next_entry name
zio.write contents
end
end
end
zip_data = zipstream.string
end
def unzip(zip_data)
fin = StringIO.new(zip_data.force_encoding(Encoding::ASCII_8BIT))
entries = {}
Zip::InputStream.open(fin) do |fzip|
while entry = fzip.get_next_entry
entries[entry.name] = fzip.read
end
end
entries
end
end