class DeepStore::Codecs::GzipCodec

Constants

CHUNK_SIZE

Public Instance Methods

decode(stream) click to toggle source
# File lib/deep_store/codecs/gzip_codec.rb, line 10
def decode(stream)
  decompressed_stream = Tempfile.new
  decompressed_stream.binmode

  Zlib::GzipReader.open(stream) do |gz|
    while (chunk = gz.read(CHUNK_SIZE))
      decompressed_stream.write(chunk)
    end
  end

  stream.rewind
  decompressed_stream.rewind
  decompressed_stream
end
encode(stream) click to toggle source
# File lib/deep_store/codecs/gzip_codec.rb, line 25
def encode(stream)
  compressed_stream = Tempfile.new
  compressed_stream.binmode

  Zlib::GzipWriter.open(compressed_stream.path) do |gz|
    while (chunk = stream.read(CHUNK_SIZE))
      gz.write(chunk)
    end
  end

  stream.rewind
  compressed_stream.rewind
  compressed_stream
end