diff options
author | Richard van der Hoff <github@rvanderhoff.org.uk> | 2018-01-05 09:52:39 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-05 09:52:39 +0000 |
commit | efdfd5c83539dc1b92e4d48bc8de947cf2aed560 (patch) | |
tree | b56bac2a95f6e2b9d4bf4176ee7f094b5910f095 /synapse/federation/federation_base.py | |
parent | Merge pull request #2683 from seckrv/fix_pwd_auth_prov_typo (diff) | |
parent | Check missing fields in event_from_pdu_json (diff) | |
download | synapse-efdfd5c83539dc1b92e4d48bc8de947cf2aed560.tar.xz |
Merge pull request #2745 from matrix-org/rav/assert_params
Check missing fields in event_from_pdu_json
Diffstat (limited to 'synapse/federation/federation_base.py')
-rw-r--r-- | synapse/federation/federation_base.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/synapse/federation/federation_base.py b/synapse/federation/federation_base.py index a0f5d40eb3..7918d3e442 100644 --- a/synapse/federation/federation_base.py +++ b/synapse/federation/federation_base.py @@ -16,7 +16,9 @@ import logging from synapse.api.errors import SynapseError from synapse.crypto.event_signing import check_event_content_hash +from synapse.events import FrozenEvent from synapse.events.utils import prune_event +from synapse.http.servlet import assert_params_in_request from synapse.util import unwrapFirstError, logcontext from twisted.internet import defer @@ -169,3 +171,28 @@ class FederationBase(object): ) return deferreds + + +def event_from_pdu_json(pdu_json, outlier=False): + """Construct a FrozenEvent from an event json received over federation + + Args: + pdu_json (object): pdu as received over federation + outlier (bool): True to mark this event as an outlier + + Returns: + FrozenEvent + + Raises: + SynapseError: if the pdu is missing required fields + """ + # we could probably enforce a bunch of other fields here (room_id, sender, + # origin, etc etc) + assert_params_in_request(pdu_json, ('event_id', 'type')) + event = FrozenEvent( + pdu_json + ) + + event.internal_metadata.outlier = outlier + + return event |