module Pheme::Compression

Constants

GZIP_MAGIC_NUMBER

tools.ietf.org/html/rfc1952#page-6

Public Instance Methods

compress(body) click to toggle source
# File lib/pheme/compression.rb, line 6
def compress(body)
  gz = Zlib::GzipWriter.new(StringIO.new)
  gz << body
  Base64.encode64(gz.close.string)
end
decompress(body) click to toggle source
# File lib/pheme/compression.rb, line 12
def decompress(body)
  return Zlib::GzipReader.new(StringIO.new(Base64.decode64(body))).read if gzip?(body)

  body
end

Private Instance Methods

gzip?(body) click to toggle source
# File lib/pheme/compression.rb, line 23
def gzip?(body)
  # Decode the first 4 bytes to compare with magic number
  Base64.decode64(body[0..4]).unpack('n') == GZIP_MAGIC_NUMBER
end