class HTTPX::Plugins::Compression::Encoder

def bytesize

def bytesize
  deflate
  @buffer.size
end

def close

def close
  @buffer.close
  @body.close
end

def deflate(&blk)

def deflate(&blk)
  return unless @buffer.size.zero?
  @body.rewind
  @deflater.deflate(@body, @buffer, chunk_size: 16_384, &blk)
end

def each(&blk)

def each(&blk)
  return enum_for(__method__) unless block_given?
  unless @buffer.size.zero?
    @buffer.rewind
    return @buffer.each(&blk)
  end
  deflate(&blk)
end

def initialize(body, deflater)

def initialize(body, deflater)
  @body = body.respond_to?(:read) ? body : StringIO.new(body.to_s)
  @buffer = StringIO.new("".b, File::RDWR)
  @deflater = deflater
end

def to_s

def to_s
  deflate
  @buffer.rewind
  @buffer.read
end