|
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