diff options
author | Olivier Wilkinson (reivilibre) <oliverw@matrix.org> | 2023-09-22 18:59:10 +0100 |
---|---|---|
committer | Olivier Wilkinson (reivilibre) <oliverw@matrix.org> | 2023-09-22 18:59:10 +0100 |
commit | da19c6fcf7d6b8f416f466ac102e2742937baa63 (patch) | |
tree | 572b9536c67cf208c9036b53ab668aac80f76ff3 /synapse/rest/client | |
parent | Add missing license header. (#16359) (diff) | |
download | synapse-da19c6fcf7d6b8f416f466ac102e2742937baa63.tar.xz |
Add warnings when /forget isn't given a JSON body
Diffstat (limited to 'synapse/rest/client')
-rw-r--r-- | synapse/rest/client/room.py | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/synapse/rest/client/room.py b/synapse/rest/client/room.py index 553938ce9d..8ca22c7991 100644 --- a/synapse/rest/client/room.py +++ b/synapse/rest/client/room.py @@ -47,6 +47,7 @@ from synapse.http.servlet import ( parse_enum, parse_integer, parse_json_object_from_request, + parse_json_value_from_request, parse_string, parse_strings_from_args, ) @@ -960,6 +961,17 @@ class RoomForgetRestServlet(TransactionRestServlet): self, request: SynapseRequest, room_id: str ) -> Tuple[int, JsonDict]: requester = await self.auth.get_user_by_req(request, allow_guest=False) + + content = parse_json_value_from_request(request, allow_empty_body=True) + if content is None: + logger.warning( + "No JSON body supplied to POST /forget. " + "This is not spec-compliant and will not be accepted in a future release!" + ) + elif not isinstance(content, dict): + message = "Content must be a JSON object." + raise SynapseError(HTTPStatus.BAD_REQUEST, message, errcode=Codes.BAD_JSON) + return await self._do(requester, room_id) async def on_PUT( @@ -968,6 +980,16 @@ class RoomForgetRestServlet(TransactionRestServlet): requester = await self.auth.get_user_by_req(request, allow_guest=False) set_tag("txn_id", txn_id) + content = parse_json_value_from_request(request, allow_empty_body=True) + if content is None: + logger.warning( + "No JSON body supplied to PUT /forget. " + "This is not spec-compliant and will not be accepted in a future release!" + ) + elif not isinstance(content, dict): + message = "Content must be a JSON object." + raise SynapseError(HTTPStatus.BAD_REQUEST, message, errcode=Codes.BAD_JSON) + return await self.txns.fetch_or_execute_request( request, requester, self._do, requester, room_id ) |