|
18 | 18 | # python 2 and python 3 compatibility library
|
19 | 19 | import httpx
|
20 | 20 | from httpx import HTTPError
|
| 21 | +from .stream import Stream |
21 | 22 |
|
22 | 23 | logger = logging.getLogger(__name__)
|
23 | 24 |
|
@@ -71,9 +72,21 @@ def __init__(self, configuration, pools_size=4, maxsize=None):
|
71 | 72 | if configuration.cert_file and configuration.key_file:
|
72 | 73 | self.client.cert = (configuration.cert_file, configuration.key_file)
|
73 | 74 |
|
74 |
| - def request(self, method, url, stream = False, query_params=None, headers=None, |
| 75 | + def _stream_generator(self, method, url, query_params, headers, request_body, _request_timeout): |
| 76 | + """Generator function for streaming requests.""" |
| 77 | + with self.client.stream( |
| 78 | + method, url, |
| 79 | + params=query_params, |
| 80 | + headers=headers, |
| 81 | + content=request_body, |
| 82 | + timeout=_request_timeout |
| 83 | + ) as response: |
| 84 | + for line in response.iter_lines(): |
| 85 | + yield line |
| 86 | + |
| 87 | + def request(self, method, url, stream=False, query_params=None, headers=None, |
75 | 88 | body=None, post_params=None, _preload_content=True,
|
76 |
| - _request_timeout=None) -> RESTResponse | httpx.Response: |
| 89 | + _request_timeout=None) -> RESTResponse | Stream: |
77 | 90 | """
|
78 | 91 | Perform asynchronous HTTP requests.
|
79 | 92 |
|
@@ -110,14 +123,9 @@ def request(self, method, url, stream = False, query_params=None, headers=None,
|
110 | 123 |
|
111 | 124 | try:
|
112 | 125 | if stream:
|
113 |
| - with self.client.stream( |
114 |
| - method, url, |
115 |
| - params=query_params, |
116 |
| - headers=headers, |
117 |
| - content=request_body, |
118 |
| - timeout=_request_timeout |
119 |
| - ) as r: |
120 |
| - return r |
| 126 | + return Stream(stream_generator=self._stream_generator( |
| 127 | + method, url, query_params, headers, request_body, _request_timeout |
| 128 | + )) |
121 | 129 | else:
|
122 | 130 | r = self.client.request(
|
123 | 131 | method, url,
|
@@ -210,6 +218,7 @@ def PATCH(self, url, stream=False, headers=None, query_params=None, post_params=
|
210 | 218 | _request_timeout=_request_timeout,
|
211 | 219 | body=body)
|
212 | 220 |
|
| 221 | + |
213 | 222 | class RESTAsyncClientObject(object):
|
214 | 223 |
|
215 | 224 | def __init__(self, configuration, pools_size=4, maxsize=None):
|
@@ -297,53 +306,53 @@ async def HEAD(self, url, headers=None, query_params=None, _preload_content=True
|
297 | 306 | query_params=query_params)
|
298 | 307 |
|
299 | 308 | async def OPTIONS(self, url, headers=None, query_params=None, post_params=None,
|
300 |
| - body=None, _preload_content=True, _request_timeout=None): |
| 309 | + body=None, _preload_content=True, _request_timeout=None): |
301 | 310 | return await self.request("OPTIONS", url,
|
302 |
| - headers=headers, |
303 |
| - query_params=query_params, |
304 |
| - post_params=post_params, |
305 |
| - _preload_content=_preload_content, |
306 |
| - _request_timeout=_request_timeout, |
307 |
| - body=body) |
| 311 | + headers=headers, |
| 312 | + query_params=query_params, |
| 313 | + post_params=post_params, |
| 314 | + _preload_content=_preload_content, |
| 315 | + _request_timeout=_request_timeout, |
| 316 | + body=body) |
308 | 317 |
|
309 | 318 | async def DELETE(self, url, headers=None, query_params=None, body=None,
|
310 |
| - _preload_content=True, _request_timeout=None): |
| 319 | + _preload_content=True, _request_timeout=None): |
311 | 320 | return await self.request("DELETE", url,
|
312 |
| - headers=headers, |
313 |
| - query_params=query_params, |
314 |
| - _preload_content=_preload_content, |
315 |
| - _request_timeout=_request_timeout, |
316 |
| - body=body) |
| 321 | + headers=headers, |
| 322 | + query_params=query_params, |
| 323 | + _preload_content=_preload_content, |
| 324 | + _request_timeout=_request_timeout, |
| 325 | + body=body) |
317 | 326 |
|
318 | 327 | async def POST(self, url, headers=None, query_params=None, post_params=None,
|
319 |
| - body=None, _preload_content=True, _request_timeout=None): |
| 328 | + body=None, _preload_content=True, _request_timeout=None): |
320 | 329 | return await self.request("POST", url,
|
321 |
| - headers=headers, |
322 |
| - query_params=query_params, |
323 |
| - post_params=post_params, |
324 |
| - _preload_content=_preload_content, |
325 |
| - _request_timeout=_request_timeout, |
326 |
| - body=body) |
| 330 | + headers=headers, |
| 331 | + query_params=query_params, |
| 332 | + post_params=post_params, |
| 333 | + _preload_content=_preload_content, |
| 334 | + _request_timeout=_request_timeout, |
| 335 | + body=body) |
327 | 336 |
|
328 | 337 | async def PUT(self, url, headers=None, query_params=None, post_params=None,
|
329 |
| - body=None, _preload_content=True, _request_timeout=None): |
| 338 | + body=None, _preload_content=True, _request_timeout=None): |
330 | 339 | return await self.request("PUT", url,
|
331 |
| - headers=headers, |
332 |
| - query_params=query_params, |
333 |
| - post_params=post_params, |
334 |
| - _preload_content=_preload_content, |
335 |
| - _request_timeout=_request_timeout, |
336 |
| - body=body) |
| 340 | + headers=headers, |
| 341 | + query_params=query_params, |
| 342 | + post_params=post_params, |
| 343 | + _preload_content=_preload_content, |
| 344 | + _request_timeout=_request_timeout, |
| 345 | + body=body) |
337 | 346 |
|
338 | 347 | async def PATCH(self, url, headers=None, query_params=None, post_params=None,
|
339 |
| - body=None, _preload_content=True, _request_timeout=None): |
| 348 | + body=None, _preload_content=True, _request_timeout=None): |
340 | 349 | return await self.request("PATCH", url,
|
341 |
| - headers=headers, |
342 |
| - query_params=query_params, |
343 |
| - post_params=post_params, |
344 |
| - _preload_content=_preload_content, |
345 |
| - _request_timeout=_request_timeout, |
346 |
| - body=body) |
| 350 | + headers=headers, |
| 351 | + query_params=query_params, |
| 352 | + post_params=post_params, |
| 353 | + _preload_content=_preload_content, |
| 354 | + _request_timeout=_request_timeout, |
| 355 | + body=body) |
347 | 356 |
|
348 | 357 |
|
349 | 358 | class ApiException(Exception):
|
|
0 commit comments