| 146 | |
| 147 | |
| 148 | class ServerSentEvent: |
| 149 | def __init__( |
| 150 | self, |
| 151 | *, |
| 152 | event: str | None = None, |
| 153 | data: str | None = None, |
| 154 | id: str | None = None, |
| 155 | retry: int | None = None, |
| 156 | ) -> None: |
| 157 | if data is None: |
| 158 | data = "" |
| 159 | |
| 160 | self._id = id |
| 161 | self._data = data |
| 162 | self._event = event or None |
| 163 | self._retry = retry |
| 164 | |
| 165 | @property |
| 166 | def event(self) -> str | None: |
| 167 | return self._event |
| 168 | |
| 169 | @property |
| 170 | def id(self) -> str | None: |
| 171 | return self._id |
| 172 | |
| 173 | @property |
| 174 | def retry(self) -> int | None: |
| 175 | return self._retry |
| 176 | |
| 177 | @property |
| 178 | def data(self) -> str: |
| 179 | return self._data |
| 180 | |
| 181 | def json(self) -> Any: |
| 182 | return json.loads(self.data) |
| 183 | |
| 184 | @override |
| 185 | def __repr__(self) -> str: |
| 186 | return f"ServerSentEvent(event={self.event}, data={self.data}, id={self.id}, retry={self.retry})" |
| 187 | |
| 188 | |
| 189 | class SSEDecoder: |