Decode the data passed in and potentially flush the decoder.
(
self,
data: bytes,
decode_content: bool | None,
flush_decoder: bool,
max_length: int | None = None,
)
| 617 | self._decoder = _get_decoder(content_encoding) |
| 618 | |
| 619 | def _decode( |
| 620 | self, |
| 621 | data: bytes, |
| 622 | decode_content: bool | None, |
| 623 | flush_decoder: bool, |
| 624 | max_length: int | None = None, |
| 625 | ) -> bytes: |
| 626 | class="st">""" |
| 627 | Decode the data passed in and potentially flush the decoder. |
| 628 | class="st">""" |
| 629 | if not decode_content: |
| 630 | if self._has_decoded_content: |
| 631 | raise RuntimeError( |
| 632 | class="st">"Calling read(decode_content=False) is not supported after " |
| 633 | class="st">"read(decode_content=True) was called." |
| 634 | ) |
| 635 | return data |
| 636 | |
| 637 | if max_length is None or flush_decoder: |
| 638 | max_length = -1 |
| 639 | |
| 640 | try: |
| 641 | if self._decoder: |
| 642 | data = self._decoder.decompress(data, max_length=max_length) |
| 643 | self._has_decoded_content = True |
| 644 | except self.DECODER_ERROR_CLASSES as e: |
| 645 | content_encoding = self.headers.get(class="st">"content-encoding", class="st">"").lower() |
| 646 | raise DecodeError( |
| 647 | class="st">"Received response with content-encoding: %s, but " |
| 648 | class="st">"failed to decode it." % content_encoding, |
| 649 | e, |
| 650 | ) from e |
| 651 | if flush_decoder: |
| 652 | data += self._flush_decoder() |
| 653 | |
| 654 | return data |
| 655 | |
| 656 | def _flush_decoder(self) -> bytes: |
| 657 | class="st">""" |