Beispiel #1
0
def _ensure_html_response(url: str, session: PipSession) -> None:
    """Send a HEAD request to the URL, and ensure the response contains HTML.

    Raises `_NotHTTP` if the URL is not available for a HEAD request, or
    `_NotHTML` if the content type is not text/html.
    """
    scheme, netloc, path, query, fragment = urllib.parse.urlsplit(url)
    if scheme not in {"http", "https"}:
        raise _NotHTTP()

    resp = session.head(url, allow_redirects=True)
    raise_for_status(resp)

    _ensure_html_header(resp)
Beispiel #2
0
 def __init__(
     self, url: str, session: PipSession, chunk_size: int = CONTENT_CHUNK_SIZE
 ) -> None:
     head = session.head(url, headers=HEADERS)
     raise_for_status(head)
     assert head.status_code == 200
     self._session, self._url, self._chunk_size = session, url, chunk_size
     self._length = int(head.headers["Content-Length"])
     self._file = NamedTemporaryFile()
     self.truncate(self._length)
     self._left: List[int] = []
     self._right: List[int] = []
     if "bytes" not in head.headers.get("Accept-Ranges", "none"):
         raise HTTPRangeRequestUnsupported("range request is not supported")
     self._check_zip()