Class: DeepStore::Codecs::GzipCodec

Inherits:
Object
  • Object
show all
Includes:
Codec
Defined in:
lib/deep_store/codecs/gzip_codec.rb

Constant Summary collapse

CHUNK_SIZE =
1024 * 1024

Instance Method Summary collapse

Methods included from Codec

included

Instance Method Details

#decode(stream) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 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) ⇒ Object



25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 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