class HTTP::Features::AutoDeflate::CompressedBody

Public Class Methods

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

Public Instance Methods

each(&block) click to toggle source
# File lib/http/features/auto_deflate.rb, line 40
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 35
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 62
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 54
def compressed_each
  while (data = @compressed.read(Connection::BUFFER_SIZE))
    yield data
  end
ensure
  @compressed.close!
end