class Protocol::HPACK::Decompressor

def read_string

Raises:
  • (CompressionError) - when input is malformed

Returns:
  • (String) - UTF-8 encoded string
def read_string
	huffman = (peek_byte & 0x80) == 0x80
	
	length = read_integer(7)
	
	raise CompressionError, "Invalid string length!" unless length
	
	string = read_bytes(length)
	
	raise CompressionError, "Invalid string length, got #{string.bytesize}, expecting #{length}!" unless string.bytesize == length
	
	string = Huffman.decode(string) if huffman
	
	return string.force_encoding(Encoding::UTF_8)
end