Class: Requests::HPACK::Decoder

Inherits:
Object
  • Object
show all
Defined in:
lib/requests/hpack.rb

Instance Method Summary collapse

Constructor Details

#initialize(max_size: 4096) ⇒ Decoder

Returns a new instance of Decoder.



179
180
181
182
183
# File 'lib/requests/hpack.rb', line 179

def initialize(max_size: 4096)
  @dynamic = []
  @max_size = max_size
  @size = 0
end

Instance Method Details

#decode(bytes) ⇒ Object



184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
# File 'lib/requests/hpack.rb', line 184

def decode(bytes)
  pos = 0
  out = []
  while pos < bytes.bytesize
    byte = bytes.getbyte(pos)
    if byte & 0x80 != 0
      idx, pos = Integer.decode(bytes, pos, 7)
      out << lookup(idx)
    elsif byte & 0x40 != 0
      name, value, pos = read_literal(bytes, pos, 6)
      add_dynamic(name, value)
      out << [name, value]
    elsif byte & 0x20 != 0
      size, pos = Integer.decode(bytes, pos, 5)
      @max_size = size
      evict
    else
      name, value, pos = read_literal(bytes, pos, 4)
      out << [name, value]
    end
  end
  out
end