1+ from __future__ import annotations
2+
13from typing import Any , Dict , Optional , Union
24
35import requests
6+ from requests .structures import CaseInsensitiveDict
47from requests_toolbelt .multipart .encoder import MultipartEncoder # type: ignore
58
69
10+ class RequestsResponse :
11+ def __init__ (self , response : requests .Response ) -> None :
12+ self ._response : requests .Response = response
13+
14+ @property
15+ def response (self ) -> requests .Response :
16+ return self ._response
17+
18+ @property
19+ def status_code (self ) -> int :
20+ return self ._response .status_code
21+
22+ @property
23+ def headers (self ) -> CaseInsensitiveDict [str ]:
24+ return self ._response .headers
25+
26+ @property
27+ def content (self ) -> bytes :
28+ return self ._response .content
29+
30+ def json (self ) -> Any :
31+ return self ._response .json ()
32+
33+
734class RequestsBackend :
835 def __init__ (self , session : Optional [requests .Session ] = None ) -> None :
936 self ._client : requests .Session = session or requests .Session ()
@@ -22,8 +49,8 @@ def http_request(
2249 timeout : Optional [float ] = None ,
2350 verify : Optional [Union [bool , str ]] = True ,
2451 stream : Optional [bool ] = False ,
25- ** kwargs : Any
26- ) -> requests . Response :
52+ ** kwargs : Any ,
53+ ) -> RequestsResponse :
2754 """Make HTTP request
2855
2956 Args:
@@ -40,7 +67,7 @@ def http_request(
4067 Returns:
4168 A requests Response object.
4269 """
43- return self ._client .request (
70+ response : requests . Response = self ._client .request (
4471 method = method ,
4572 url = url ,
4673 params = params ,
@@ -49,5 +76,6 @@ def http_request(
4976 stream = stream ,
5077 verify = verify ,
5178 json = json ,
52- ** kwargs
79+ ** kwargs ,
5380 )
81+ return RequestsResponse (response = response )
0 commit comments