class HTTP::Features::AutoDeflate::CompressedBody

Public Class Methods

new(uncompressed_body) click to toggle source
# File lib/http/features/auto_deflate.rb, line 52
def initialize(uncompressed_body)
  @body       = uncompressed_body
  @compressed = nil
end

Public Instance Methods

each(&block) click to toggle source
# File lib/http/features/auto_deflate.rb, line 62
def each(&block)
  return to_enum __method__ unless block

  if @compressed
    compressed_each(&block)
  else
    compress(&block)
  end

  self
end
size() click to toggle source
# File lib/http/features/auto_deflate.rb, line 57
def size
  compress_all! unless @compressed
  @compressed.size
end

Private Instance Methods

compress_all!() click to toggle source
# File lib/http/features/auto_deflate.rb, line 84
def compress_all!
  @compressed = Tempfile.new("http-compressed_body", :binmode => true)
  compress { |data| @compressed.write(data) }
  @compressed.rewind
end
compressed_each() { |data| ... } click to toggle source
# File lib/http/features/auto_deflate.rb, line 76
def compressed_each
  while (data = @compressed.read(Connection::BUFFER_SIZE))
    yield data
  end
ensure
  @compressed.close!
end