Quiver.Conn.HTTP1.Parse (quiver v0.2.0)

Copy Markdown View Source

Incremental HTTP/1.1 response parser.

Operates as a state machine. Feed bytes via parse/2, get back parsed response fragments, updated state, and unconsumed bytes.

Summary

Types

chunk_state()

@type chunk_state() ::
  :chunk_size
  | {:chunk_data, non_neg_integer()}
  | :chunk_crlf
  | {:chunk_trailers, [{String.t(), String.t()}]}

parse_state()

@type parse_state() ::
  :idle
  | :status
  | {:headers, non_neg_integer(), [{String.t(), String.t()}]}
  | {:body_content_length, non_neg_integer()}
  | {:body_chunked, chunk_state()}
  | :body_until_close

response_fragment()

@type response_fragment() ::
  {:status, non_neg_integer()}
  | {:headers, [{String.t(), String.t()}]}
  | {:trailers, [{String.t(), String.t()}]}
  | {:data, binary()}
  | :done