]> git.ipfire.org Git - thirdparty/httpx.git/commitdiff
Repurpose RedirectBodyUnavailable as RequestBodyUnavailable (#690)
authorFlorimond Manca <florimond.manca@gmail.com>
Fri, 3 Jan 2020 21:25:55 +0000 (22:25 +0100)
committerGitHub <noreply@github.com>
Fri, 3 Jan 2020 21:25:55 +0000 (22:25 +0100)
httpx/__init__.py
httpx/client.py
httpx/exceptions.py
tests/client/test_redirects.py

index caaa81a901f7b2cd3f238b03f09b63fd545885e3..01f406826c02f8152e12c4f6b0ca1a4ab40e46c4 100644 (file)
@@ -17,8 +17,8 @@ from .exceptions import (
     ProtocolError,
     ProxyError,
     ReadTimeout,
-    RedirectBodyUnavailable,
     RedirectLoop,
+    RequestBodyUnavailable,
     ResponseClosed,
     ResponseNotRead,
     StreamConsumed,
@@ -63,8 +63,8 @@ __all__ = [
     "PoolTimeout",
     "ProtocolError",
     "ReadTimeout",
-    "RedirectBodyUnavailable",
     "RedirectLoop",
+    "RequestBodyUnavailable",
     "ResponseClosed",
     "ResponseNotRead",
     "StreamConsumed",
index b2c2e5eed08d681e598c4deec9589d17e12d3e3f..27a146ae75fc9f9a82ff4e8f494d4b283a3ef948 100644 (file)
@@ -27,8 +27,8 @@ from .dispatch.proxy_http import HTTPProxy
 from .exceptions import (
     HTTPError,
     InvalidURL,
-    RedirectBodyUnavailable,
     RedirectLoop,
+    RequestBodyUnavailable,
     TooManyRedirects,
 )
 from .models import (
@@ -561,8 +561,13 @@ class AsyncClient:
         """
         if method != request.method and method == "GET":
             return None
+
         if not request.stream.can_replay():
-            raise RedirectBodyUnavailable()
+            raise RequestBodyUnavailable(
+                "Got a redirect response, but the request body was streaming "
+                "and is no longer available."
+            )
+
         return request.stream
 
     async def send_handling_auth(
index 2d8d27dc4cb2c73ecac72e4f5b10647bb4aa3a6d..e1992708f6d7bc887719d51f21547a2315ed03a8 100644 (file)
@@ -86,13 +86,6 @@ class TooManyRedirects(RedirectError):
     """
 
 
-class RedirectBodyUnavailable(RedirectError):
-    """
-    Got a redirect response, but the request body was streaming, and is
-    no longer available.
-    """
-
-
 class RedirectLoop(RedirectError):
     """
     Infinite redirect loop.
@@ -117,6 +110,13 @@ class StreamError(HTTPError):
     """
 
 
+class RequestBodyUnavailable(StreamError):
+    """
+    Had to send the request again, but the request body was streaming, and is
+    no longer available.
+    """
+
+
 class StreamConsumed(StreamError):
     """
     Attempted to read or stream response content, but the content has already
index 663d2def94bde64a2700783d70ec3e3f05086366..4c02745532c8c5a1564db232726bbc9bad2d5748 100644 (file)
@@ -7,9 +7,9 @@ from httpx import (
     URL,
     AsyncClient,
     NotRedirectResponse,
-    RedirectBodyUnavailable,
     RedirectLoop,
     Request,
+    RequestBodyUnavailable,
     Response,
     TooManyRedirects,
     codes,
@@ -293,7 +293,7 @@ async def test_cannot_redirect_streaming_body():
     async def streaming_body():
         yield b"Example request body"
 
-    with pytest.raises(RedirectBodyUnavailable):
+    with pytest.raises(RequestBodyUnavailable):
         await client.post(url, data=streaming_body())