From 4e79b09dd97a1dda6b1ea87325302b95feb0a23e Mon Sep 17 00:00:00 2001 From: Erik Johnston Date: Wed, 24 Sep 2014 11:37:06 +0100 Subject: [PATCH] Fill out the prune_event method. --- synapse/api/events/utils.py | 37 +++++++++++++++++++++++++++++++------ 1 file changed, 31 insertions(+), 6 deletions(-) diff --git a/synapse/api/events/utils.py b/synapse/api/events/utils.py index dfefb2662a..3d8b9a1db1 100644 --- a/synapse/api/events/utils.py +++ b/synapse/api/events/utils.py @@ -13,7 +13,11 @@ # See the License for the specific language governing permissions and # limitations under the License. -from .room import RoomMemberEvent +from .room import ( + RoomMemberEvent, RoomJoinRulesEvent, RoomPowerLevelsEvent, + RoomAddStateLevelEvent, RoomSendEventLevelEvent, RoomOpsPowerLevelsEvent, + RoomAliasesEvent, RoomCreateEvent, +) def prune_event(event): """ Prunes the given event of all keys we don't know about or think could @@ -27,12 +31,33 @@ def prune_event(event): # Remove all extraneous fields. event.unrecognized_keys = {} + new_content = {} + + def add_fields(*fields): + for field in fields: + if field in event.content: + new_content[field] = event.content[field] + if event.type == RoomMemberEvent.TYPE: - new_content = { - "membership": event.content["membership"] - } - else: - new_content = {} + add_fields("membership") + elif event.type == RoomCreateEvent.TYPE: + add_fields("creator") + elif event.type == RoomJoinRulesEvent.TYPE: + add_fields("join_rule") + elif event.type == RoomPowerLevelsEvent.TYPE: + # TODO: Actually check these are valid user_ids etc. + add_fields("default") + for k, v in event.content.items(): + if k.startswith("@") and isinstance(v, (int, long)): + new_content[k] = v + elif event.type == RoomAddStateLevelEvent.TYPE: + add_fields("level") + elif event.type == RoomSendEventLevelEvent.TYPE: + add_fields("level") + elif event.type == RoomOpsPowerLevelsEvent.TYPE: + add_fields("kick_level", "ban_level", "delete_level") + elif event.type == RoomAliasesEvent.TYPE: + add_fields("aliases") event.content = new_content