diff --git a/synapse/rest/room.py b/synapse/rest/room.py
index ec0ce78fda..05da0be090 100644
--- a/synapse/rest/room.py
+++ b/synapse/rest/room.py
@@ -138,7 +138,7 @@ class RoomStateEventRestServlet(RestServlet):
raise SynapseError(
404, "Event not found.", errcode=Codes.NOT_FOUND
)
- defer.returnValue((200, data[0].get_dict()["content"]))
+ defer.returnValue((200, data.get_dict()["content"]))
@defer.inlineCallbacks
def on_PUT(self, request, room_id, event_type, state_key):
@@ -148,12 +148,15 @@ class RoomStateEventRestServlet(RestServlet):
content = _parse_json(request)
event = self.event_factory.create_event(
- etype=event_type,
+ etype=urllib.unquote(event_type),
content=content,
room_id=urllib.unquote(room_id),
user_id=user.to_string(),
state_key=urllib.unquote(state_key)
)
+
+ self.validator.validate(event)
+
if event_type == RoomMemberEvent.TYPE:
# membership events are special
handler = self.handlers.room_member_handler
@@ -182,12 +185,14 @@ class RoomSendEventRestServlet(RestServlet):
content = _parse_json(request)
event = self.event_factory.create_event(
- etype=event_type,
+ etype=urllib.unquote(event_type),
room_id=urllib.unquote(room_id),
user_id=user.to_string(),
content=content
)
+ self.validator.validate(event)
+
msg_handler = self.handlers.message_handler
yield msg_handler.send_message(event)
@@ -253,6 +258,9 @@ class JoinRoomAliasServlet(RestServlet):
user_id=user.to_string(),
state_key=user.to_string()
)
+
+ self.validator.validate(event)
+
handler = self.handlers.room_member_handler
yield handler.change_membership(event)
defer.returnValue((200, {}))
@@ -424,6 +432,9 @@ class RoomMembershipRestServlet(RestServlet):
user_id=user.to_string(),
state_key=state_key
)
+
+ self.validator.validate(event)
+
handler = self.handlers.room_member_handler
yield handler.change_membership(event)
defer.returnValue((200, {}))
@@ -458,9 +469,11 @@ class RoomRedactEventRestServlet(RestServlet):
room_id=urllib.unquote(room_id),
user_id=user.to_string(),
content=content,
- redacts=event_id,
+ redacts=urllib.unquote(event_id),
)
+ self.validator.validate(event)
+
msg_handler = self.handlers.message_handler
yield msg_handler.send_message(event)
|