Copy rather than move the fields to shuffle between a v1 and a v2 event.

This should make all v1 APIs compatible with v2 clients. While still
allowing v1 clients to access the fields.

This makes the documentation easier since we can just document the v2
format and explain that some of the fields, in some of the APIs are
duplicated for backwards compatibility, rather than having to document
two separate event formats.
This commit is contained in:
Mark Haines 2015-11-30 17:46:35 +00:00
parent 6cd595e438
commit bde8d78b8a

View File

@ -100,22 +100,18 @@ def format_event_raw(d):
def format_event_for_client_v1(d): def format_event_for_client_v1(d):
d["user_id"] = d.pop("sender", None) d = format_event_for_client_v2(d)
move_keys = ( d["user_id"] = d.get("sender", None)
copy_keys = (
"age", "redacted_because", "replaces_state", "prev_content", "age", "redacted_because", "replaces_state", "prev_content",
"invite_room_state", "invite_room_state",
) )
for key in move_keys: for key in copy_keys:
if key in d["unsigned"]: if key in d["unsigned"]:
d[key] = d["unsigned"][key] d[key] = d["unsigned"][key]
drop_keys = (
"auth_events", "prev_events", "hashes", "signatures", "depth",
"unsigned", "origin", "prev_state"
)
for key in drop_keys:
d.pop(key, None)
return d return d