apytizer 0.0.1a0__py3-none-any.whl → 0.0.1b2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- apytizer/__init__.py +2 -12
- apytizer/adapters/__init__.py +2 -3
- apytizer/adapters/transport_adapter.py +91 -0
- apytizer/apis/__init__.py +6 -0
- apytizer/apis/abstract_api.py +36 -0
- apytizer/apis/web_api.py +460 -0
- apytizer/connections/__init__.py +6 -0
- apytizer/connections/abstract_connection.py +28 -0
- apytizer/connections/http_connection.py +431 -0
- apytizer/decorators/__init__.py +5 -5
- apytizer/decorators/caching.py +60 -9
- apytizer/decorators/chunking.py +105 -0
- apytizer/decorators/connection.py +55 -20
- apytizer/decorators/json.py +70 -12
- apytizer/decorators/pagination.py +50 -32
- apytizer/endpoints/__init__.py +6 -0
- apytizer/endpoints/abstract_endpoint.py +38 -0
- apytizer/endpoints/web_endpoint.py +519 -0
- apytizer/engines/__init__.py +6 -0
- apytizer/engines/abstract_engine.py +45 -0
- apytizer/engines/http_engine.py +171 -0
- apytizer/errors.py +34 -0
- apytizer/factories/__init__.py +5 -0
- apytizer/factories/abstract_factory.py +17 -0
- apytizer/http_methods.py +34 -0
- apytizer/managers/__init__.py +12 -0
- apytizer/managers/abstract_manager.py +80 -0
- apytizer/managers/base_manager.py +116 -0
- apytizer/mappers/__init__.py +6 -0
- apytizer/mappers/abstract_mapper.py +48 -0
- apytizer/mappers/base_mapper.py +78 -0
- apytizer/media_types.py +118 -0
- apytizer/models/__init__.py +6 -0
- apytizer/models/abstract_model.py +119 -0
- apytizer/models/base_model.py +85 -0
- apytizer/protocols.py +38 -0
- apytizer/repositories/__init__.py +6 -0
- apytizer/repositories/abstract_repository.py +81 -0
- apytizer/repositories/managed_repository.py +92 -0
- apytizer/routes/__init__.py +6 -0
- apytizer/routes/abstract_route.py +32 -0
- apytizer/routes/base_route.py +138 -0
- apytizer/sessions/__init__.py +33 -0
- apytizer/sessions/abstract_session.py +63 -0
- apytizer/sessions/requests_session.py +125 -0
- apytizer/states/__init__.py +6 -0
- apytizer/states/abstract_state.py +71 -0
- apytizer/states/local_state.py +99 -0
- apytizer/utils/__init__.py +9 -4
- apytizer/utils/caching.py +39 -0
- apytizer/utils/dictionaries.py +376 -0
- apytizer/utils/errors.py +104 -0
- apytizer/utils/iterables.py +91 -0
- apytizer/utils/objects.py +145 -0
- apytizer/utils/strings.py +69 -0
- apytizer/utils/typing.py +29 -0
- apytizer-0.0.1b2.dist-info/METADATA +41 -0
- apytizer-0.0.1b2.dist-info/RECORD +60 -0
- {apytizer-0.0.1a0.dist-info → apytizer-0.0.1b2.dist-info}/WHEEL +1 -2
- apytizer/abstracts/__init__.py +0 -8
- apytizer/abstracts/api.py +0 -147
- apytizer/abstracts/endpoint.py +0 -177
- apytizer/abstracts/model.py +0 -50
- apytizer/abstracts/session.py +0 -39
- apytizer/adapters/transport.py +0 -40
- apytizer/base/__init__.py +0 -8
- apytizer/base/api.py +0 -510
- apytizer/base/endpoint.py +0 -443
- apytizer/base/model.py +0 -119
- apytizer/utils/generate_key.py +0 -18
- apytizer/utils/merge.py +0 -19
- apytizer-0.0.1a0.dist-info/METADATA +0 -27
- apytizer-0.0.1a0.dist-info/RECORD +0 -25
- apytizer-0.0.1a0.dist-info/top_level.txt +0 -1
- {apytizer-0.0.1a0.dist-info → apytizer-0.0.1b2.dist-info/licenses}/LICENSE +0 -0
apytizer/base/api.py
DELETED
|
@@ -1,510 +0,0 @@
|
|
|
1
|
-
# -*- coding: utf-8 -*-
|
|
2
|
-
"""Basic API class.
|
|
3
|
-
|
|
4
|
-
This module defines a basic API class implementation.
|
|
5
|
-
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
# Standard Library Imports
|
|
9
|
-
import logging
|
|
10
|
-
from typing import Dict, MutableMapping, Tuple, Union, final
|
|
11
|
-
from urllib.parse import urljoin
|
|
12
|
-
|
|
13
|
-
# Third-Party Imports
|
|
14
|
-
import requests
|
|
15
|
-
from requests.adapters import HTTPAdapter
|
|
16
|
-
from requests.auth import AuthBase
|
|
17
|
-
|
|
18
|
-
# Local Imports
|
|
19
|
-
from .. import abstracts
|
|
20
|
-
from ..decorators.caching import cache_response
|
|
21
|
-
from ..utils import merge
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
# Initialize logger.
|
|
25
|
-
log = logging.getLogger(__name__)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
class BasicAPI(abstracts.AbstractAPI):
|
|
29
|
-
"""
|
|
30
|
-
Implements a basic API.
|
|
31
|
-
|
|
32
|
-
The BasicAPI class provides an interface for interacting with a REST API.
|
|
33
|
-
It implements the standard HTTP methods (HEAD, GET, POST, PUT, PATCH, DELETE, OPTIONS and TRACE)
|
|
34
|
-
as well as a `request` method for sending a custom HTTP request.
|
|
35
|
-
|
|
36
|
-
Args:
|
|
37
|
-
url: Base URL for API.
|
|
38
|
-
auth: Authorization or credentials.
|
|
39
|
-
headers (optional): Headers to set globally for API.
|
|
40
|
-
params (optional): Parameters to set globally for API.
|
|
41
|
-
cache (optional): Mutable mapping for caching responses.
|
|
42
|
-
|
|
43
|
-
Attributes:
|
|
44
|
-
url: API URL.
|
|
45
|
-
|
|
46
|
-
"""
|
|
47
|
-
|
|
48
|
-
def __init__(
|
|
49
|
-
self,
|
|
50
|
-
url: str,
|
|
51
|
-
auth: Union[AuthBase, Tuple] = None,
|
|
52
|
-
*,
|
|
53
|
-
headers: Dict = None,
|
|
54
|
-
params: Dict = None,
|
|
55
|
-
cache: MutableMapping = None
|
|
56
|
-
):
|
|
57
|
-
self.url = url + "/" if url[-1] != "/" else url
|
|
58
|
-
self.auth = auth
|
|
59
|
-
self.headers = headers
|
|
60
|
-
self.params = params
|
|
61
|
-
self.cache = cache
|
|
62
|
-
|
|
63
|
-
def request(
|
|
64
|
-
self,
|
|
65
|
-
method: str,
|
|
66
|
-
route: str,
|
|
67
|
-
headers: Dict = None,
|
|
68
|
-
params: Dict = None,
|
|
69
|
-
**kwargs
|
|
70
|
-
) -> requests.Response:
|
|
71
|
-
"""
|
|
72
|
-
Sends an HTTP request.
|
|
73
|
-
|
|
74
|
-
Args:
|
|
75
|
-
method: HTTP request method to use (HEAD, GET, POST, PUT, DELETE, OPTIONS, or TRACE).
|
|
76
|
-
route: API path to which the request will be sent.
|
|
77
|
-
headers (optional): Request headers (overrides global headers).
|
|
78
|
-
params (optional): Request parameters (overrides global parameters).
|
|
79
|
-
**kwargs: Additional arguments to pass to request.
|
|
80
|
-
|
|
81
|
-
Returns:
|
|
82
|
-
Response object.
|
|
83
|
-
|
|
84
|
-
.. _Requests Documentation:
|
|
85
|
-
https://docs.python-requests.org/en/latest/api/
|
|
86
|
-
|
|
87
|
-
"""
|
|
88
|
-
uri = urljoin(self.url, route)
|
|
89
|
-
log.debug(
|
|
90
|
-
"Sending HTTP %(method)s request to %(uri)s",
|
|
91
|
-
{'method': method, 'uri': uri}
|
|
92
|
-
)
|
|
93
|
-
|
|
94
|
-
response = requests.request(
|
|
95
|
-
method,
|
|
96
|
-
uri,
|
|
97
|
-
auth=self.auth,
|
|
98
|
-
headers=merge(self.headers, headers),
|
|
99
|
-
params=merge(self.params, params),
|
|
100
|
-
**kwargs
|
|
101
|
-
)
|
|
102
|
-
return response
|
|
103
|
-
|
|
104
|
-
@cache_response
|
|
105
|
-
def head(
|
|
106
|
-
self,
|
|
107
|
-
route: str,
|
|
108
|
-
headers: Dict = None,
|
|
109
|
-
params: Dict = None,
|
|
110
|
-
**kwargs
|
|
111
|
-
) -> requests.Response:
|
|
112
|
-
"""
|
|
113
|
-
Sends an HTTP HEAD request.
|
|
114
|
-
|
|
115
|
-
Args:
|
|
116
|
-
route: API path to which the request will be sent.
|
|
117
|
-
headers (optional): Request headers (overrides global headers).
|
|
118
|
-
params (optional): Request parameters (overrides global parameters).
|
|
119
|
-
**kwargs: Additional arguments to pass to request.
|
|
120
|
-
|
|
121
|
-
Returns:
|
|
122
|
-
Response object.
|
|
123
|
-
|
|
124
|
-
.. _HTTP HEAD Method:
|
|
125
|
-
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/HEAD
|
|
126
|
-
|
|
127
|
-
"""
|
|
128
|
-
response = self.request(
|
|
129
|
-
'HEAD',
|
|
130
|
-
route,
|
|
131
|
-
headers=headers,
|
|
132
|
-
params=params,
|
|
133
|
-
**kwargs
|
|
134
|
-
)
|
|
135
|
-
return response
|
|
136
|
-
|
|
137
|
-
@cache_response
|
|
138
|
-
def get(
|
|
139
|
-
self,
|
|
140
|
-
route: str,
|
|
141
|
-
headers: Dict = None,
|
|
142
|
-
params: Dict = None,
|
|
143
|
-
**kwargs
|
|
144
|
-
) -> requests.Response:
|
|
145
|
-
"""
|
|
146
|
-
Sends an HTTP GET request.
|
|
147
|
-
|
|
148
|
-
Args:
|
|
149
|
-
route: API path to which the request will be sent.
|
|
150
|
-
headers (optional): Request headers (overrides global headers).
|
|
151
|
-
params (optional): Request parameters (overrides global parameters).
|
|
152
|
-
**kwargs: Additional arguments to pass to request.
|
|
153
|
-
|
|
154
|
-
Returns:
|
|
155
|
-
Response object.
|
|
156
|
-
|
|
157
|
-
.. _HTTP GET Method:
|
|
158
|
-
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/GET
|
|
159
|
-
|
|
160
|
-
"""
|
|
161
|
-
response = self.request(
|
|
162
|
-
'GET',
|
|
163
|
-
route,
|
|
164
|
-
headers=headers,
|
|
165
|
-
params=params,
|
|
166
|
-
**kwargs
|
|
167
|
-
)
|
|
168
|
-
return response
|
|
169
|
-
|
|
170
|
-
@cache_response
|
|
171
|
-
def post(
|
|
172
|
-
self,
|
|
173
|
-
route: str,
|
|
174
|
-
headers: Dict = None,
|
|
175
|
-
params: Dict = None,
|
|
176
|
-
**kwargs
|
|
177
|
-
) -> requests.Response:
|
|
178
|
-
"""
|
|
179
|
-
Sends an HTTP POST request.
|
|
180
|
-
|
|
181
|
-
Args:
|
|
182
|
-
route: API path to which the request will be sent.
|
|
183
|
-
headers (optional): Request headers (overrides global headers).
|
|
184
|
-
params (optional): Request parameters (overrides global parameters).
|
|
185
|
-
**kwargs: Additional arguments to pass to request.
|
|
186
|
-
|
|
187
|
-
Returns:
|
|
188
|
-
Response object.
|
|
189
|
-
|
|
190
|
-
.. _HTTP POST Method:
|
|
191
|
-
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/POST
|
|
192
|
-
|
|
193
|
-
"""
|
|
194
|
-
response = self.request(
|
|
195
|
-
'POST',
|
|
196
|
-
route,
|
|
197
|
-
headers=headers,
|
|
198
|
-
params=params,
|
|
199
|
-
**kwargs
|
|
200
|
-
)
|
|
201
|
-
return response
|
|
202
|
-
|
|
203
|
-
@cache_response
|
|
204
|
-
def put(
|
|
205
|
-
self,
|
|
206
|
-
route: str,
|
|
207
|
-
headers: Dict = None,
|
|
208
|
-
params: Dict = None,
|
|
209
|
-
**kwargs
|
|
210
|
-
) -> requests.Response:
|
|
211
|
-
"""
|
|
212
|
-
Sends an HTTP PUT request.
|
|
213
|
-
|
|
214
|
-
Args:
|
|
215
|
-
route: API path to which the request will be sent.
|
|
216
|
-
headers (optional): Request headers (overrides global headers).
|
|
217
|
-
params (optional): Request parameters (overrides global parameters).
|
|
218
|
-
**kwargs: Additional arguments to pass to request.
|
|
219
|
-
|
|
220
|
-
Returns:
|
|
221
|
-
Response object.
|
|
222
|
-
|
|
223
|
-
.. _HTTP PUT Method:
|
|
224
|
-
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PUT
|
|
225
|
-
|
|
226
|
-
"""
|
|
227
|
-
response = self.request(
|
|
228
|
-
'PUT',
|
|
229
|
-
route,
|
|
230
|
-
headers=headers,
|
|
231
|
-
params=params,
|
|
232
|
-
**kwargs
|
|
233
|
-
)
|
|
234
|
-
return response
|
|
235
|
-
|
|
236
|
-
@cache_response
|
|
237
|
-
def patch(
|
|
238
|
-
self,
|
|
239
|
-
route: str,
|
|
240
|
-
headers: Dict = None,
|
|
241
|
-
params: Dict = None,
|
|
242
|
-
**kwargs
|
|
243
|
-
) -> requests.Response:
|
|
244
|
-
"""
|
|
245
|
-
Sends an HTTP PATCH request.
|
|
246
|
-
|
|
247
|
-
Args:
|
|
248
|
-
route: API path to which the request will be sent.
|
|
249
|
-
headers (optional): Request headers (overrides global headers).
|
|
250
|
-
params (optional): Request parameters (overrides global parameters).
|
|
251
|
-
**kwargs: Additional arguments to pass to request.
|
|
252
|
-
|
|
253
|
-
Returns:
|
|
254
|
-
Response object.
|
|
255
|
-
|
|
256
|
-
.. _HTTP PATCH Method:
|
|
257
|
-
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/PATCH
|
|
258
|
-
|
|
259
|
-
"""
|
|
260
|
-
response = self.request(
|
|
261
|
-
'PATCH',
|
|
262
|
-
route,
|
|
263
|
-
headers=headers,
|
|
264
|
-
params=params,
|
|
265
|
-
**kwargs
|
|
266
|
-
)
|
|
267
|
-
return response
|
|
268
|
-
|
|
269
|
-
@cache_response
|
|
270
|
-
def delete(
|
|
271
|
-
self,
|
|
272
|
-
route: str,
|
|
273
|
-
headers: Dict = None,
|
|
274
|
-
params: Dict = None,
|
|
275
|
-
**kwargs
|
|
276
|
-
) -> requests.Response:
|
|
277
|
-
"""
|
|
278
|
-
Sends an HTTP DELETE request.
|
|
279
|
-
|
|
280
|
-
Args:
|
|
281
|
-
route: API path to which the request will be sent.
|
|
282
|
-
headers (optional): Request headers (overrides global headers).
|
|
283
|
-
params (optional): Request parameters (overrides global parameters).
|
|
284
|
-
**kwargs: Additional arguments to pass to request.
|
|
285
|
-
|
|
286
|
-
Returns:
|
|
287
|
-
Response object.
|
|
288
|
-
|
|
289
|
-
.. _HTTP DELETE Method:
|
|
290
|
-
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/DELETE
|
|
291
|
-
|
|
292
|
-
"""
|
|
293
|
-
response = self.request(
|
|
294
|
-
'DELETE',
|
|
295
|
-
route,
|
|
296
|
-
headers=headers,
|
|
297
|
-
params=params,
|
|
298
|
-
**kwargs
|
|
299
|
-
)
|
|
300
|
-
return response
|
|
301
|
-
|
|
302
|
-
@cache_response
|
|
303
|
-
def options(
|
|
304
|
-
self,
|
|
305
|
-
route: str,
|
|
306
|
-
headers: Dict = None,
|
|
307
|
-
params: Dict = None,
|
|
308
|
-
**kwargs
|
|
309
|
-
) -> requests.Response:
|
|
310
|
-
"""
|
|
311
|
-
Sends an HTTP OPTIONS request.
|
|
312
|
-
|
|
313
|
-
Args:
|
|
314
|
-
route: API path to which the request will be sent.
|
|
315
|
-
headers (optional): Request headers (overrides global headers).
|
|
316
|
-
params (optional): Request parameters (overrides global parameters).
|
|
317
|
-
**kwargs: Additional arguments to pass to request.
|
|
318
|
-
|
|
319
|
-
Returns:
|
|
320
|
-
Response object.
|
|
321
|
-
|
|
322
|
-
.. _HTTP OPTIONS Method:
|
|
323
|
-
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/OPTIONS
|
|
324
|
-
|
|
325
|
-
"""
|
|
326
|
-
response = self.request(
|
|
327
|
-
'OPTIONS',
|
|
328
|
-
route,
|
|
329
|
-
headers=headers,
|
|
330
|
-
params=params,
|
|
331
|
-
**kwargs
|
|
332
|
-
)
|
|
333
|
-
return response
|
|
334
|
-
|
|
335
|
-
@cache_response
|
|
336
|
-
def trace(
|
|
337
|
-
self,
|
|
338
|
-
route: str,
|
|
339
|
-
headers: Dict = None,
|
|
340
|
-
params: Dict = None,
|
|
341
|
-
**kwargs
|
|
342
|
-
) -> requests.Response:
|
|
343
|
-
"""
|
|
344
|
-
Sends an HTTP TRACE request.
|
|
345
|
-
|
|
346
|
-
Args:
|
|
347
|
-
route: API path to which the request will be sent.
|
|
348
|
-
headers (optional): Request headers (overrides global headers).
|
|
349
|
-
params (optional): Request parameters (overrides global parameters).
|
|
350
|
-
**kwargs: Additional arguments to pass to request.
|
|
351
|
-
|
|
352
|
-
Returns:
|
|
353
|
-
Response object.
|
|
354
|
-
|
|
355
|
-
.. _HTTP TRACE Method:
|
|
356
|
-
https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods/TRACE
|
|
357
|
-
|
|
358
|
-
"""
|
|
359
|
-
response = self.request(
|
|
360
|
-
'TRACE',
|
|
361
|
-
route,
|
|
362
|
-
headers=headers,
|
|
363
|
-
params=params,
|
|
364
|
-
**kwargs
|
|
365
|
-
)
|
|
366
|
-
return response
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
class SessionAPI(abstracts.AbstractSession, BasicAPI):
|
|
370
|
-
"""
|
|
371
|
-
Implements a session-based API.
|
|
372
|
-
|
|
373
|
-
The SessionAPI class implements the same interface as the BasicAPI; however, it
|
|
374
|
-
overrides the `request` method to use requests.Session. In addition, the class
|
|
375
|
-
provides `start` and `stop` methods to allow manual control of the session.
|
|
376
|
-
|
|
377
|
-
The SessionAPI class can also be used as a context manager.
|
|
378
|
-
|
|
379
|
-
Args:
|
|
380
|
-
url: Base URL for API.
|
|
381
|
-
auth: Authorization or credentials.
|
|
382
|
-
headers (optional): Headers to set globally for API.
|
|
383
|
-
params (optional): Parameters to set globally for API.
|
|
384
|
-
adapter (optional): Instance of an HTTPAdapter.
|
|
385
|
-
session (optional): Instance of a requests.Session.
|
|
386
|
-
cache (optional): Mutable mapping for caching responses.
|
|
387
|
-
|
|
388
|
-
.. Requests Documentation:
|
|
389
|
-
https://docs.python-requests.org/en/latest/api/#request-sessions
|
|
390
|
-
|
|
391
|
-
"""
|
|
392
|
-
|
|
393
|
-
def __init__(
|
|
394
|
-
self,
|
|
395
|
-
url: str,
|
|
396
|
-
auth: Union[AuthBase, Tuple] = None,
|
|
397
|
-
*,
|
|
398
|
-
headers: Dict = None,
|
|
399
|
-
params: Dict = None,
|
|
400
|
-
adapter: HTTPAdapter = None,
|
|
401
|
-
session: requests.Session = None,
|
|
402
|
-
cache: MutableMapping = None,
|
|
403
|
-
):
|
|
404
|
-
super().__init__(
|
|
405
|
-
url,
|
|
406
|
-
auth,
|
|
407
|
-
headers=headers,
|
|
408
|
-
params=params,
|
|
409
|
-
cache=cache,
|
|
410
|
-
)
|
|
411
|
-
self.adapter = adapter
|
|
412
|
-
self.session = session
|
|
413
|
-
|
|
414
|
-
@final
|
|
415
|
-
def __enter__(self):
|
|
416
|
-
"""
|
|
417
|
-
Starts the API session as a context manager.
|
|
418
|
-
"""
|
|
419
|
-
self.start()
|
|
420
|
-
|
|
421
|
-
@final
|
|
422
|
-
def __exit__(self, *args):
|
|
423
|
-
"""
|
|
424
|
-
Closes the API session as a context manager.
|
|
425
|
-
"""
|
|
426
|
-
self.close()
|
|
427
|
-
|
|
428
|
-
def start(self) -> None:
|
|
429
|
-
"""
|
|
430
|
-
Begins an API session.
|
|
431
|
-
"""
|
|
432
|
-
log.debug("Starting API session...")
|
|
433
|
-
|
|
434
|
-
# Create session
|
|
435
|
-
if not self.session:
|
|
436
|
-
self.session = requests.Session()
|
|
437
|
-
|
|
438
|
-
# Set autherization
|
|
439
|
-
if self.auth and not self.session.auth:
|
|
440
|
-
self.session.auth = self.auth
|
|
441
|
-
|
|
442
|
-
# Add default headers
|
|
443
|
-
if self.headers:
|
|
444
|
-
self.session.headers.update(self.headers)
|
|
445
|
-
|
|
446
|
-
# Mount transport adapter
|
|
447
|
-
if self.adapter:
|
|
448
|
-
self.session.mount("https://", self.adapter)
|
|
449
|
-
self.session.mount("http://", self.adapter)
|
|
450
|
-
|
|
451
|
-
return self.session
|
|
452
|
-
|
|
453
|
-
def close(self, *args) -> None:
|
|
454
|
-
"""
|
|
455
|
-
Manually destroys the API session.
|
|
456
|
-
"""
|
|
457
|
-
log.debug("Closing API session...")
|
|
458
|
-
self.session.close()
|
|
459
|
-
|
|
460
|
-
def request(
|
|
461
|
-
self,
|
|
462
|
-
method: str,
|
|
463
|
-
route: str,
|
|
464
|
-
headers: Dict = None,
|
|
465
|
-
params: Dict = None,
|
|
466
|
-
**kwargs
|
|
467
|
-
) -> requests.Response:
|
|
468
|
-
"""
|
|
469
|
-
Sends an HTTP request.
|
|
470
|
-
|
|
471
|
-
Args:
|
|
472
|
-
method: HTTP request method to use (HEAD, GET, POST, PUT, DELETE, OPTIONS, or TRACE).
|
|
473
|
-
route: API path to which the request will be sent.
|
|
474
|
-
headers (optional): Request headers (overrides global headers).
|
|
475
|
-
params (optional): Request parameters (overrides global parameters).
|
|
476
|
-
**kwargs: Additional arguments to pass to request.
|
|
477
|
-
|
|
478
|
-
Returns:
|
|
479
|
-
Response object.
|
|
480
|
-
|
|
481
|
-
.. Requests Documentation:
|
|
482
|
-
https://docs.python-requests.org/en/latest/api/
|
|
483
|
-
|
|
484
|
-
"""
|
|
485
|
-
uri = urljoin(self.url, route)
|
|
486
|
-
log.debug(
|
|
487
|
-
"Sending HTTP %(method)s request to %(uri)s",
|
|
488
|
-
{'method': method, 'uri': uri}
|
|
489
|
-
)
|
|
490
|
-
|
|
491
|
-
if self.session:
|
|
492
|
-
response = self.session.request(
|
|
493
|
-
method,
|
|
494
|
-
uri,
|
|
495
|
-
headers=merge(self.headers, headers),
|
|
496
|
-
params=merge(self.params, params),
|
|
497
|
-
**kwargs
|
|
498
|
-
)
|
|
499
|
-
|
|
500
|
-
else:
|
|
501
|
-
log.warning("Session not started: start() method not called before sending request")
|
|
502
|
-
response = super().request(
|
|
503
|
-
method,
|
|
504
|
-
uri,
|
|
505
|
-
headers=headers,
|
|
506
|
-
params=params,
|
|
507
|
-
**kwargs
|
|
508
|
-
)
|
|
509
|
-
|
|
510
|
-
return response
|