Validate input parameters for the sendToDevice API. (#8975)

This makes the "messages" key in the content required. This is currently
optional in the spec, but that seems to be an error.
This commit is contained in:
Patrick Cloke 2020-12-29 12:47:45 -05:00 committed by GitHub
parent cfcf5541b4
commit 14a7371375
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 3 additions and 1 deletions

1
changelog.d/8975.bugfix Normal file
View file

@ -0,0 +1 @@
Add validation to the `sendToDevice` API to raise a missing parameters error instead of a 500 error.

View file

@ -17,7 +17,7 @@ import logging
from typing import Tuple from typing import Tuple
from synapse.http import servlet from synapse.http import servlet
from synapse.http.servlet import parse_json_object_from_request from synapse.http.servlet import assert_params_in_dict, parse_json_object_from_request
from synapse.logging.opentracing import set_tag, trace from synapse.logging.opentracing import set_tag, trace
from synapse.rest.client.transactions import HttpTransactionCache from synapse.rest.client.transactions import HttpTransactionCache
@ -54,6 +54,7 @@ class SendToDeviceRestServlet(servlet.RestServlet):
requester = await self.auth.get_user_by_req(request, allow_guest=True) requester = await self.auth.get_user_by_req(request, allow_guest=True)
content = parse_json_object_from_request(request) content = parse_json_object_from_request(request)
assert_params_in_dict(content, ("messages",))
sender_user_id = requester.user.to_string() sender_user_id = requester.user.to_string()