| 240 | |
| 241 | |
| 242 | class ServerSentEvent: |
| 243 | def __init__( |
| 244 | self, |
| 245 | *, |
| 246 | event: str | None = None, |
| 247 | data: str | None = None, |
| 248 | id: str | None = None, |
| 249 | retry: int | None = None, |
| 250 | ) -> None: |
| 251 | if data is None: |
| 252 | data = "" |
| 253 | |
| 254 | self._id = id |
| 255 | self._data = data |
| 256 | self._event = event or None |
| 257 | self._retry = retry |
| 258 | |
| 259 | @property |
| 260 | def event(self) -> str | None: |
| 261 | return self._event |
| 262 | |
| 263 | @property |
| 264 | def id(self) -> str | None: |
| 265 | return self._id |
| 266 | |
| 267 | @property |
| 268 | def retry(self) -> int | None: |
| 269 | return self._retry |
| 270 | |
| 271 | @property |
| 272 | def data(self) -> str: |
| 273 | return self._data |
| 274 | |
| 275 | def json(self) -> Any: |
| 276 | return json.loads(self.data) |
| 277 | |
| 278 | @override |
| 279 | def __repr__(self) -> str: |
| 280 | return f"ServerSentEvent(event={self.event}, data={self.data}, id={self.id}, retry={self.retry})" |
| 281 | |
| 282 | |
| 283 | class SSEDecoder: |