From: Tom Christie Date: Thu, 23 Jul 2020 08:55:21 +0000 (+0100) Subject: Include 'request' on TooManyRedirect and RequestBodyUnavailable (#1077) X-Git-Tag: 0.14.0~42 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=083d2e9aa0007cbe3f24a9bb2bdd9e5248b62091;p=thirdparty%2Fhttpx.git Include 'request' on TooManyRedirect and RequestBodyUnavailable (#1077) --- diff --git a/httpx/_auth.py b/httpx/_auth.py index ab430973..d60dbdc0 100644 --- a/httpx/_auth.py +++ b/httpx/_auth.py @@ -100,7 +100,12 @@ class DigestAuth(Auth): def auth_flow(self, request: Request) -> typing.Generator[Request, Response, None]: if not request.stream.can_replay(): - raise RequestBodyUnavailable("Request body is no longer available.") + raise RequestBodyUnavailable( + "Cannot use digest auth with streaming requests that are unable " + "to replay the request body if a second request is required.", + request=request, + ) + response = yield request if response.status_code != 401 or "www-authenticate" not in response.headers: diff --git a/httpx/_client.py b/httpx/_client.py index 0eac03b7..24812d93 100644 --- a/httpx/_client.py +++ b/httpx/_client.py @@ -376,7 +376,8 @@ class BaseClient: if not request.stream.can_replay(): raise RequestBodyUnavailable( "Got a redirect response, but the request body was streaming " - "and is no longer available." + "and is no longer available.", + request=request, ) return request.stream @@ -628,7 +629,9 @@ class Client(BaseClient): while True: if len(history) > self.max_redirects: - raise TooManyRedirects() + raise TooManyRedirects( + "Exceeded maximum allowed redirects.", request=request + ) response = self._send_handling_auth( request, auth=auth, timeout=timeout, history=history @@ -1159,7 +1162,9 @@ class AsyncClient(BaseClient): while True: if len(history) > self.max_redirects: - raise TooManyRedirects() + raise TooManyRedirects( + "Exceeded maximum allowed redirects.", request=request + ) response = await self._send_handling_auth( request, auth=auth, timeout=timeout, history=history