| 627 | request = None # type: HTTPRequest |
| 628 | |
| 629 | def __init__( |
| 630 | self, |
| 631 | request: HTTPRequest, |
| 632 | code: int, |
| 633 | headers: Optional[httputil.HTTPHeaders] = None, |
| 634 | buffer: Optional[BytesIO] = None, |
| 635 | effective_url: Optional[str] = None, |
| 636 | error: Optional[BaseException] = None, |
| 637 | request_time: Optional[float] = None, |
| 638 | time_info: Optional[Dict[str, float]] = None, |
| 639 | reason: Optional[str] = None, |
| 640 | start_time: Optional[float] = None, |
| 641 | ) -> None: |
| 642 | if isinstance(request, _RequestProxy): |
| 643 | self.request = request.request |
| 644 | else: |
| 645 | self.request = request |
| 646 | self.code = code |
| 647 | self.reason = reason or httputil.responses.get(code, "Unknown") |
| 648 | if headers is not None: |
| 649 | self.headers = headers |
| 650 | else: |
| 651 | self.headers = httputil.HTTPHeaders() |
| 652 | self.buffer = buffer |
| 653 | self._body = None # type: Optional[bytes] |
| 654 | if effective_url is None: |
| 655 | self.effective_url = request.url |
| 656 | else: |
| 657 | self.effective_url = effective_url |
| 658 | self._error_is_response_code = False |
| 659 | if error is None: |
| 660 | if self.code < 200 or self.code >= 300: |
| 661 | self._error_is_response_code = True |
| 662 | self.error = HTTPError(self.code, message=self.reason, response=self) |
| 663 | else: |
| 664 | self.error = None |
| 665 | else: |
| 666 | self.error = error |
| 667 | self.start_time = start_time |
| 668 | self.request_time = request_time |
| 669 | self.time_info = time_info or {} |
| 670 | |
| 671 | @property |
| 672 | def body(self) -> bytes: |