Skip to content
This repository was archived by the owner on Apr 26, 2024. It is now read-only.

Commit c5453df

Browse files
committed
Split out /batch_send meta properties to their own fields
Part of #10737 and more generally [MSC2716](matrix-org/matrix-spec-proposals#2716) See matrix-org/matrix-spec-proposals#2716 (comment)
1 parent 857b000 commit c5453df

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

synapse/rest/client/room_batch.py

+18-11
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
import logging
1616
import re
1717
from typing import TYPE_CHECKING, Awaitable, List, Tuple
18+
from http import HTTPStatus
1819

1920
from twisted.web.server import Request
2021

@@ -179,7 +180,7 @@ async def on_POST(
179180

180181
if not requester.app_service:
181182
raise AuthError(
182-
403,
183+
HTTPStatus.FORBIDDEN,
183184
"Only application services can use the /batchsend endpoint",
184185
)
185186

@@ -192,7 +193,7 @@ async def on_POST(
192193

193194
if prev_events_from_query is None:
194195
raise SynapseError(
195-
400,
196+
HTTPStatus.BAD_REQUEST,
196197
"prev_event query parameter is required when inserting historical messages back in time",
197198
errcode=Codes.MISSING_PARAM,
198199
)
@@ -213,7 +214,7 @@ async def on_POST(
213214
prev_state_ids = list(prev_state_map.values())
214215
auth_event_ids = prev_state_ids
215216

216-
state_events_at_start = []
217+
state_event_ids_at_start = []
217218
for state_event in body["state_events_at_start"]:
218219
assert_params_in_dict(
219220
state_event, ["type", "origin_server_ts", "content", "sender"]
@@ -279,7 +280,7 @@ async def on_POST(
279280
)
280281
event_id = event.event_id
281282

282-
state_events_at_start.append(event_id)
283+
state_event_ids_at_start.append(event_id)
283284
auth_event_ids.append(event_id)
284285

285286
events_to_create = body["events"]
@@ -424,20 +425,26 @@ async def on_POST(
424425
context=context,
425426
)
426427

427-
# Add the base_insertion_event to the bottom of the list we return
428-
if base_insertion_event is not None:
429-
event_ids.append(base_insertion_event.event_id)
428+
insertion_event_id = event_ids.pop(0)
429+
chunk_event_id = event_ids.pop(len(event_ids) - 1)
430+
historical_event_ids = event_ids
430431

431-
return 200, {
432-
"state_events": state_events_at_start,
433-
"events": event_ids,
432+
response_dict = {
433+
"state_event_ids": state_event_ids_at_start,
434+
"event_ids": historical_event_ids,
434435
"next_chunk_id": insertion_event["content"][
435436
EventContentFields.MSC2716_NEXT_CHUNK_ID
436437
],
438+
"insertion_event_id": insertion_event_id,
439+
"chunk_event_id": chunk_event_id,
437440
}
441+
if base_insertion_event is not None:
442+
response_dict["base_insertion_event_id"] = base_insertion_event.event_id
443+
444+
return HTTPStatus.OK, response_dict
438445

439446
def on_GET(self, request: Request, room_id: str) -> Tuple[int, str]:
440-
return 501, "Not implemented"
447+
return HTTPStatus.NOT_IMPLEMENTED, "Not implemented"
441448

442449
def on_PUT(
443450
self, request: SynapseRequest, room_id: str

0 commit comments

Comments
 (0)