Class: StoreAgent::DataEncoder::GzipEncoder

Inherits:
StoreAgent::DataEncoder show all
Defined in:
lib/store_agent/data_encoder/gzip_encoder.rb

Overview

データをgzip圧縮して保存するためのエンコーダ
使用する際には StoreAgent.configure で初期化時に指定する

StoreAgent.configure do |c|
  c.storage_data_encoders = [StoreAgent::DataEncoder::GzipEncoder.new]
end

Instance Method Summary collapse

Instance Method Details

#decode(encrypted_data, **_) ⇒ Object



40
41
42
43
44
45
46
47
# File 'lib/store_agent/data_encoder/gzip_encoder.rb', line 40

def decode(encrypted_data, **_)
  super do
    sio = StringIO.new(encrypted_data, "r")
    Zlib::GzipReader.wrap(sio) do |gz|
      gz.read
    end
  end
end

#encode(data, **_) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/store_agent/data_encoder/gzip_encoder.rb', line 27

def encode(data, **_)
  super do
    StringIO.open("", "r+") do |sio|
      Zlib::GzipWriter.wrap(sio) do |gz|
        gz.write(data)
        gz.finish
      end
      sio.rewind
      sio.read
    end
  end
end