1
1
from typing import Any , Dict , Optional , Union
2
2
3
3
import requests
4
+ from requests .structures import CaseInsensitiveDict
4
5
from requests_toolbelt .multipart .encoder import MultipartEncoder # type: ignore
5
6
6
7
8
+ class RequestsResponse :
9
+ def __init__ (self , response : requests .Response ) -> None :
10
+ self ._response : requests .Response = response
11
+
12
+ @property
13
+ def response (self ) -> requests .Response :
14
+ return self ._response
15
+
16
+ @property
17
+ def status_code (self ) -> int :
18
+ return self ._response .status_code
19
+
20
+ @property
21
+ def headers (self ) -> CaseInsensitiveDict [str ]:
22
+ return self ._response .headers
23
+
24
+ @property
25
+ def content (self ) -> bytes :
26
+ return self ._response .content
27
+
28
+ def json (self ) -> Any :
29
+ return self ._response .json ()
30
+
31
+
7
32
class RequestsBackend :
8
33
def __init__ (self , session : Optional [requests .Session ] = None ) -> None :
9
34
self ._client : requests .Session = session or requests .Session ()
@@ -23,7 +48,7 @@ def http_request(
23
48
verify : Optional [Union [bool , str ]] = True ,
24
49
stream : Optional [bool ] = False ,
25
50
** kwargs : Any
26
- ) -> requests . Response :
51
+ ) -> RequestsResponse :
27
52
"""Make HTTP request
28
53
29
54
Args:
@@ -40,7 +65,7 @@ def http_request(
40
65
Returns:
41
66
A requests Response object.
42
67
"""
43
- return self ._client .request (
68
+ response : requests . Response = self ._client .request (
44
69
method = method ,
45
70
url = url ,
46
71
params = params ,
@@ -51,3 +76,4 @@ def http_request(
51
76
json = json ,
52
77
** kwargs
53
78
)
79
+ return RequestsResponse (response = response )
0 commit comments