diff options
Diffstat (limited to 'synapse/api/events/__init__.py')
-rw-r--r-- | synapse/api/events/__init__.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/synapse/api/events/__init__.py b/synapse/api/events/__init__.py index 63c0bd7ae7..0019789dd1 100644 --- a/synapse/api/events/__init__.py +++ b/synapse/api/events/__init__.py @@ -117,10 +117,21 @@ class SynapseEvent(JsonEncodedObject): """ raise NotImplementedError("get_content_template not implemented.") - def get_pdu_json(self): + def get_pdu_json(self, time_now=None): pdu_json = self.get_full_dict() pdu_json.pop("destination", None) pdu_json.pop("outlier", None) + pdu_json.pop("replaces_state", None) + pdu_json.pop("redacted", None) + state_hash = pdu_json.pop("state_hash", None) + if state_hash is not None: + pdu_json.setdefault("unsigned", {})["state_hash"] = state_hash + content = pdu_json.get("content", {}) + content.pop("prev", None) + if time_now is not None and "age_ts" in pdu_json: + age = time_now - pdu_json["age_ts"] + pdu_json.setdefault("unsigned", {})["age"] = int(age) + del pdu_json["age_ts"] return pdu_json |