|
25 | 25 | from synapse.http.servlet import (
|
26 | 26 | RestServlet,
|
27 | 27 | parse_and_validate_json_object_from_request,
|
28 |
| - parse_json_object_from_request, |
29 | 28 | )
|
30 | 29 | from synapse.http.site import SynapseRequest
|
31 | 30 | from synapse.rest.client._base import client_patterns
|
@@ -170,20 +169,26 @@ def __init__(self, hs: "HomeServer"):
|
170 | 169 | self.directory_handler = hs.get_directory_handler()
|
171 | 170 | self.auth = hs.get_auth()
|
172 | 171 |
|
| 172 | + class PutBody(RequestBodyModel): |
| 173 | + visibility: Literal["public", "private"] = "public" |
| 174 | + |
173 | 175 | async def on_PUT(
|
174 | 176 | self, request: SynapseRequest, network_id: str, room_id: str
|
175 | 177 | ) -> Tuple[int, JsonDict]:
|
176 |
| - content = parse_json_object_from_request(request) |
177 |
| - visibility = content.get("visibility", "public") |
178 |
| - return await self._edit(request, network_id, room_id, visibility) |
| 178 | + content = parse_and_validate_json_object_from_request(request, self.PutBody) |
| 179 | + return await self._edit(request, network_id, room_id, content.visibility) |
179 | 180 |
|
180 | 181 | async def on_DELETE(
|
181 | 182 | self, request: SynapseRequest, network_id: str, room_id: str
|
182 | 183 | ) -> Tuple[int, JsonDict]:
|
183 | 184 | return await self._edit(request, network_id, room_id, "private")
|
184 | 185 |
|
185 | 186 | async def _edit(
|
186 |
| - self, request: SynapseRequest, network_id: str, room_id: str, visibility: str |
| 187 | + self, |
| 188 | + request: SynapseRequest, |
| 189 | + network_id: str, |
| 190 | + room_id: str, |
| 191 | + visibility: Literal["public", "private"], |
187 | 192 | ) -> Tuple[int, JsonDict]:
|
188 | 193 | requester = await self.auth.get_user_by_req(request)
|
189 | 194 | if not requester.app_service:
|
|
0 commit comments