| 53 | |
| 54 | |
| 55 | class ReceivedDataProtocol(Protocol): |
| 56 | def __init__(self, filename: bytes | None = None): |
| 57 | self.__filename: bytes | None = filename |
| 58 | self.body: BinaryIO = ( |
| 59 | Path(filename.decode()).open("wb") if filename else BytesIO() |
| 60 | ) |
| 61 | self.size: int = 0 |
| 62 | |
| 63 | def dataReceived(self, data: bytes) -> None: |
| 64 | self.body.write(data) |
| 65 | self.size += len(data) |
| 66 | |
| 67 | @property |
| 68 | def filename(self) -> bytes | None: |
| 69 | return self.__filename |
| 70 | |
| 71 | def close(self) -> None: |
| 72 | if self.filename: |
| 73 | self.body.close() |
| 74 | else: |
| 75 | self.body.seek(0) |
| 76 | |
| 77 | |
| 78 | _CODE_RE = re.compile(r"\d+") |