(self)
| 13 | self.size = size if size is not None else self._fetch_size() |
| 14 | |
| 15 | def _fetch_size(self): |
| 16 | with self.session.get(self.url, stream=True) as response: |
| 17 | response.raise_for_status() |
| 18 | content_length = response.headers.get("Content-Length") |
| 19 | if content_length is None: |
| 20 | raise ValueError("Missing Content-Length in header") |
| 21 | return int(content_length) |
| 22 | |
| 23 | def _fetch_data(self, offset: int, n: int) -> bytes: |
| 24 | headers = {"Range": f"bytes={offset}-{min(offset + n - 1, self.size)}"} |