mirror of
https://git.anonymousland.org/anonymousland/synapse.git
synced 2025-08-10 11:59:59 -04:00
Add query parameter ts
to allow appservices set the origin_server_ts
for state events. (#11866)
MSC3316 declares that both /rooms/{roomId}/send and /rooms/{roomId}/state should accept a ts parameter for appservices. This change expands support to /state and adds tests.
This commit is contained in:
parent
a423f45294
commit
719488dda8
4 changed files with 152 additions and 15 deletions
|
@ -268,15 +268,9 @@ class RoomStateEventRestServlet(TransactionRestServlet):
|
|||
|
||||
content = parse_json_object_from_request(request)
|
||||
|
||||
event_dict = {
|
||||
"type": event_type,
|
||||
"content": content,
|
||||
"room_id": room_id,
|
||||
"sender": requester.user.to_string(),
|
||||
}
|
||||
|
||||
if state_key is not None:
|
||||
event_dict["state_key"] = state_key
|
||||
origin_server_ts = None
|
||||
if requester.app_service:
|
||||
origin_server_ts = parse_integer(request, "ts")
|
||||
|
||||
try:
|
||||
if event_type == EventTypes.Member:
|
||||
|
@ -287,8 +281,22 @@ class RoomStateEventRestServlet(TransactionRestServlet):
|
|||
room_id=room_id,
|
||||
action=membership,
|
||||
content=content,
|
||||
origin_server_ts=origin_server_ts,
|
||||
)
|
||||
else:
|
||||
event_dict: JsonDict = {
|
||||
"type": event_type,
|
||||
"content": content,
|
||||
"room_id": room_id,
|
||||
"sender": requester.user.to_string(),
|
||||
}
|
||||
|
||||
if state_key is not None:
|
||||
event_dict["state_key"] = state_key
|
||||
|
||||
if origin_server_ts is not None:
|
||||
event_dict["origin_server_ts"] = origin_server_ts
|
||||
|
||||
(
|
||||
event,
|
||||
_,
|
||||
|
@ -333,10 +341,10 @@ class RoomSendEventRestServlet(TransactionRestServlet):
|
|||
"sender": requester.user.to_string(),
|
||||
}
|
||||
|
||||
# Twisted will have processed the args by now.
|
||||
assert request.args is not None
|
||||
if b"ts" in request.args and requester.app_service:
|
||||
event_dict["origin_server_ts"] = parse_integer(request, "ts", 0)
|
||||
if requester.app_service:
|
||||
origin_server_ts = parse_integer(request, "ts")
|
||||
if origin_server_ts is not None:
|
||||
event_dict["origin_server_ts"] = origin_server_ts
|
||||
|
||||
try:
|
||||
(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue