(
self,
method: Optional[str] = None,
uri: Optional[str] = None,
version: str = "HTTP/1.0",
headers: Optional[HTTPHeaders] = None,
body: Optional[bytes] = None,
host: Optional[str] = None,
files: Optional[Dict[str, List["HTTPFile"]]] = None,
connection: Optional["HTTPConnection"] = None,
start_line: Optional["RequestStartLine"] = None,
server_connection: Optional[object] = None,
)
| 344 | _body_future = None # type: Future[None] |
| 345 | |
| 346 | def __init__( |
| 347 | self, |
| 348 | method: Optional[str] = None, |
| 349 | uri: Optional[str] = None, |
| 350 | version: str = "HTTP/1.0", |
| 351 | headers: Optional[HTTPHeaders] = None, |
| 352 | body: Optional[bytes] = None, |
| 353 | host: Optional[str] = None, |
| 354 | files: Optional[Dict[str, List["HTTPFile"]]] = None, |
| 355 | connection: Optional["HTTPConnection"] = None, |
| 356 | start_line: Optional["RequestStartLine"] = None, |
| 357 | server_connection: Optional[object] = None, |
| 358 | ) -> None: |
| 359 | if start_line is not None: |
| 360 | method, uri, version = start_line |
| 361 | self.method = method |
| 362 | self.uri = uri |
| 363 | self.version = version |
| 364 | self.headers = headers or HTTPHeaders() |
| 365 | self.body = body or b"" |
| 366 | |
| 367 | # set remote IP and protocol |
| 368 | context = getattr(connection, "context", None) |
| 369 | self.remote_ip = getattr(context, "remote_ip", None) |
| 370 | self.protocol = getattr(context, "protocol", "http") |
| 371 | |
| 372 | self.host = host or self.headers.get("Host") or "127.0.0.1" |
| 373 | self.host_name = split_host_and_port(self.host.lower())[0] |
| 374 | self.files = files or {} |
| 375 | self.connection = connection |
| 376 | self.server_connection = server_connection |
| 377 | self._start_time = time.time() |
| 378 | self._finish_time = None |
| 379 | |
| 380 | if uri is not None: |
| 381 | self.path, sep, self.query = uri.partition("?") |
| 382 | self.arguments = parse_qs_bytes(self.query, keep_blank_values=True) |
| 383 | self.query_arguments = copy.deepcopy(self.arguments) |
| 384 | self.body_arguments = {} # type: Dict[str, List[bytes]] |
| 385 | |
| 386 | @property |
| 387 | def cookies(self) -> Dict[str, http.cookies.Morsel]: |
nothing calls this directly
no test coverage detected