| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- from array import array
- from .protocol import HTTPProtocol
- class HttpParser:
- def __init__(self, protocol: HTTPProtocol | object) -> None:
- """The HTTP parser.
- Args:
- protocol (HTTPProtocol): Callback interface for the parser.
- """
- def set_dangerous_leniencies(
- self,
- lenient_headers: bool | None = None,
- lenient_chunked_length: bool | None = None,
- lenient_keep_alive: bool | None = None,
- lenient_transfer_encoding: bool | None = None,
- lenient_version: bool | None = None,
- lenient_data_after_close: bool | None = None,
- lenient_optional_lf_after_cr: bool | None = None,
- lenient_optional_cr_before_lf: bool | None = None,
- lenient_optional_crlf_after_chunk: bool | None = None,
- lenient_spaces_after_chunk_size: bool | None = None,
- ) -> None:
- """Set dangerous leniencies for the parser."""
- def get_http_version(self) -> str:
- """Retrieve the HTTP protocol version e.g. "1.1"."""
- def should_keep_alive(self) -> bool:
- """Return `True` if keep-alive mode is preferred."""
- def should_upgrade(self) -> bool:
- """Return `True` if the parsed request is a valid Upgrade request.
- The method exposes a flag set just before on_headers_complete.
- Calling this method earlier will only yield `False`."""
- def feed_data(self, data: bytes | bytearray | memoryview | array[int]) -> None:
- """Feed data to the parser.
- Will eventually trigger callbacks on the ``protocol`` object.
- On HTTP upgrade, this method will raise an
- ``HttpParserUpgrade`` exception, with its sole argument
- set to the offset of the non-HTTP data in ``data``.
- """
- class HttpRequestParser(HttpParser):
- """Used for parsing http requests from the server side."""
- def get_method(self) -> bytes:
- """Retrieve the HTTP method of the request."""
- class HttpResponseParser(HttpParser):
- """Used for parsing http responses from the client side."""
- def get_status_code(self) -> int:
- """Retrieve the status code of the HTTP response."""
|