Example #1
0
def read_request_head(lines: List[bytes]) -> Request:
    """
    Parse an HTTP request head (request line + headers) from an iterable of lines

    Args:
        lines: The input lines

    Returns:
        The HTTP request object (without body)

    Raises:
        ValueError: The input is malformed.
    """
    host, port, method, scheme, authority, path, http_version = _read_request_line(lines[0])
    headers = _read_headers(lines[1:])

    return Request(
        host=host,
        port=port,
        method=method,
        scheme=scheme,
        authority=authority,
        path=path,
        http_version=http_version,
        headers=headers,
        content=None,
        trailers=None,
        timestamp_start=time.time(),
        timestamp_end=None
    )
Example #2
0
 def test_init_conv(self):
     assert Request(
         b"example.com",
         80,
         "GET",
         "http",
         "example.com",
         "/",
         "HTTP/1.1",
         (),
         None,
         (),
         0,
         0,
     )  # type: ignore
def flow():
    request = Request(host=b'localhost',
                      path=b'/test/',
                      http_version=b'1.1',
                      port=1234,
                      method=b'',
                      scheme=b'',
                      headers=Headers([(b"Host", b"example.com")]),
                      content=None,
                      timestamp_start=111.1,
                      timestamp_end=111.2,
                      authority=b'',
                      trailers='')
    flow = HTTPFlow(client_conn=MagicMock(), server_conn=MagicMock())
    flow.request = request
    return flow