Generator for data coming from a chunked-encoded HTTP response.
(self, response, decode=False)
| 353 | return sock |
| 354 | |
| 355 | def _stream_helper(self, response, decode=False): |
| 356 | """Generator for data coming from a chunked-encoded HTTP response.""" |
| 357 | |
| 358 | if response.raw._fp.chunked: |
| 359 | if decode: |
| 360 | yield from json_stream(self._stream_helper(response, False)) |
| 361 | else: |
| 362 | reader = response.raw |
| 363 | while not reader.closed: |
| 364 | # this read call will block until we get a chunk |
| 365 | data = reader.read(1) |
| 366 | if not data: |
| 367 | break |
| 368 | if reader._fp.chunk_left: |
| 369 | data += reader.read(reader._fp.chunk_left) |
| 370 | yield data |
| 371 | else: |
| 372 | # Response isn't chunked, meaning we probably |
| 373 | # encountered an error immediately |
| 374 | yield self._result(response, json=decode) |
| 375 | |
| 376 | def _multiplexed_buffer_helper(self, response): |
| 377 | """A generator of multiplexed data blocks read from a buffered |