1
- from typing import Optional
1
+ from typing import Any , Dict , Optional , Union
2
2
3
3
import requests
4
+ from requests_toolbelt .multipart .encoder import MultipartEncoder # type: ignore
4
5
5
6
6
7
class RequestsBackend :
@@ -10,3 +11,43 @@ def __init__(self, session: Optional[requests.Session] = None) -> None:
10
11
@property
11
12
def client (self ) -> requests .Session :
12
13
return self ._client
14
+
15
+ def http_request (
16
+ self ,
17
+ method : str ,
18
+ url : str ,
19
+ json : Optional [Union [Dict [str , Any ], bytes ]] = None ,
20
+ data : Optional [Union [Dict [str , Any ], MultipartEncoder ]] = None ,
21
+ params : Optional [Any ] = None ,
22
+ timeout : Optional [float ] = None ,
23
+ verify : Optional [Union [bool , str ]] = True ,
24
+ stream : Optional [bool ] = False ,
25
+ ** kwargs : Any
26
+ ) -> requests .Response :
27
+ """Make HTTP request
28
+
29
+ Args:
30
+ method: The HTTP method to call ('get', 'post', 'put', 'delete', etc.)
31
+ url: The full URL
32
+ data: The data to send to the server in the body of the request
33
+ json: Data to send in the body in json by default
34
+ timeout: The timeout, in seconds, for the request
35
+ verify: Whether SSL certificates should be validated. If
36
+ the value is a string, it is the path to a CA file used for
37
+ certificate validation.
38
+ stream: Whether the data should be streamed
39
+
40
+ Returns:
41
+ A requests Response object.
42
+ """
43
+ return self ._client .request (
44
+ method = method ,
45
+ url = url ,
46
+ params = params ,
47
+ data = data ,
48
+ timeout = timeout ,
49
+ stream = stream ,
50
+ verify = verify ,
51
+ json = json ,
52
+ ** kwargs
53
+ )
0 commit comments