1
+ from __future__ import annotations
2
+
1
3
from typing import Any , Dict , Optional , Union
2
4
3
5
import requests
6
+ from requests .structures import CaseInsensitiveDict
4
7
from requests_toolbelt .multipart .encoder import MultipartEncoder # type: ignore
5
8
6
9
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
+
7
34
class RequestsBackend :
8
35
def __init__ (self , session : Optional [requests .Session ] = None ) -> None :
9
36
self ._client : requests .Session = session or requests .Session ()
@@ -22,8 +49,8 @@ def http_request(
22
49
timeout : Optional [float ] = None ,
23
50
verify : Optional [Union [bool , str ]] = True ,
24
51
stream : Optional [bool ] = False ,
25
- ** kwargs : Any
26
- ) -> requests . Response :
52
+ ** kwargs : Any ,
53
+ ) -> RequestsResponse :
27
54
"""Make HTTP request
28
55
29
56
Args:
@@ -40,7 +67,7 @@ def http_request(
40
67
Returns:
41
68
A requests Response object.
42
69
"""
43
- return self ._client .request (
70
+ response : requests . Response = self ._client .request (
44
71
method = method ,
45
72
url = url ,
46
73
params = params ,
@@ -49,5 +76,6 @@ def http_request(
49
76
stream = stream ,
50
77
verify = verify ,
51
78
json = json ,
52
- ** kwargs
79
+ ** kwargs ,
53
80
)
81
+ return RequestsResponse (response = response )
0 commit comments