MCPcopy
hub / github.com/scrapy/scrapy / _ResponseReader

Class _ResponseReader

scrapy/core/downloader/handlers/http11.py:617–739  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

615
616
617class _ResponseReader(Protocol):
618 def __init__(
619 self,
620 finished: Deferred[_ResultT],
621 txresponse: TxResponse,
622 request: Request,
623 maxsize: int,
624 warnsize: int,
625 fail_on_dataloss: bool,
626 crawler: Crawler,
627 *,
628 tls_verbose_logging: bool = False,
629 ):
630 self._finished: Deferred[_ResultT] = finished
631 self._txresponse: TxResponse = txresponse
632 self._request: Request = request
633 self._bodybuf: BytesIO = BytesIO()
634 self._maxsize: int = maxsize
635 self._warnsize: int = warnsize
636 self._fail_on_dataloss: bool = fail_on_dataloss
637 self._reached_warnsize: bool = False
638 self._bytes_received: int = 0
639 self._certificate: ssl.Certificate | None = None
640 self._ip_address: ipaddress.IPv4Address | ipaddress.IPv6Address | None = None
641 self._crawler: Crawler = crawler
642 self._tls_verbose_logging: bool = tls_verbose_logging
643
644 def _finish_response(
645 self, flags: list[str] | None = None, stop_download: StopDownload | None = None
646 ) -> None:
647 self._finished.callback(
648 {
649 "txresponse": self._txresponse,
650 "body": self._bodybuf.getvalue(),
651 "flags": flags,
652 "certificate": self._certificate,
653 "ip_address": self._ip_address,
654 "stop_download": stop_download,
655 }
656 )
657
658 def connectionMade(self) -> None:
659 assert self.transport
660 if self._certificate is None:
661 with suppress(AttributeError):
662 self._certificate = ssl.Certificate(
663 self.transport._producer.getPeerCertificate()
664 )
665
666 if self._ip_address is None:
667 self._ip_address = ipaddress.ip_address(
668 self.transport._producer.getPeer().host
669 )
670
671 if self._tls_verbose_logging:
672 connection = self.transport._producer.getHandle()
673 hostname = urlparse_cached(self._request).hostname
674 assert hostname is not None

Callers 1

_cb_bodyreadyMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected