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

Commit 647ff3e

Browse files
author
David Robertson
authored
Remove unused room_alias field from /createRoom response (#15093)
* Change `create_room` return type * Don't return room alias from /createRoom * Update other callsites * Fix up mypy complaints It looks like new_room_user_id is None iff new_room_id is None. It's a shame we haven't expressed this in a way that mypy can understand. * Changelog
1 parent 8219525 commit 647ff3e

File tree

10 files changed

+40
-39
lines changed

10 files changed

+40
-39
lines changed

changelog.d/15093.bugfix

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Remove the unspecced `room_alias` field from the [`/createRoom`](https://spec.matrix.org/v1.6/client-server-api/#post_matrixclientv3createroom) response.

synapse/handlers/register.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ async def _create_and_join_rooms(self, user_id: str) -> None:
476476
# create room expects the localpart of the room alias
477477
config["room_alias_name"] = room_alias.localpart
478478

479-
info, _ = await room_creation_handler.create_room(
479+
room_id, _, _ = await room_creation_handler.create_room(
480480
fake_requester,
481481
config=config,
482482
ratelimit=False,
@@ -490,7 +490,7 @@ async def _create_and_join_rooms(self, user_id: str) -> None:
490490
user_id, authenticated_entity=self._server_name
491491
),
492492
target=UserID.from_string(user_id),
493-
room_id=info["room_id"],
493+
room_id=room_id,
494494
# Since it was just created, there are no remote hosts.
495495
remote_room_hosts=[],
496496
action="join",

synapse/handlers/room.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -690,13 +690,14 @@ async def create_room(
690690
config: JsonDict,
691691
ratelimit: bool = True,
692692
creator_join_profile: Optional[JsonDict] = None,
693-
) -> Tuple[dict, int]:
693+
) -> Tuple[str, Optional[RoomAlias], int]:
694694
"""Creates a new room.
695695
696696
Args:
697-
requester:
698-
The user who requested the room creation.
699-
config : A dict of configuration options.
697+
requester: The user who requested the room creation.
698+
config: A dict of configuration options. This will be the body of
699+
a /createRoom request; see
700+
https://spec.matrix.org/latest/client-server-api/#post_matrixclientv3createroom
700701
ratelimit: set to False to disable the rate limiter
701702
702703
creator_join_profile:
@@ -707,14 +708,17 @@ async def create_room(
707708
`avatar_url` and/or `displayname`.
708709
709710
Returns:
710-
First, a dict containing the keys `room_id` and, if an alias
711-
was, requested, `room_alias`. Secondly, the stream_id of the
712-
last persisted event.
711+
A 3-tuple containing:
712+
- the room ID;
713+
- if requested, the room alias, otherwise None; and
714+
- the `stream_id` of the last persisted event.
713715
Raises:
714-
SynapseError if the room ID couldn't be stored, 3pid invitation config
715-
validation failed, or something went horribly wrong.
716-
ResourceLimitError if server is blocked to some resource being
717-
exceeded
716+
SynapseError:
717+
if the room ID couldn't be stored, 3pid invitation config
718+
validation failed, or something went horribly wrong.
719+
ResourceLimitError:
720+
if server is blocked to some resource being
721+
exceeded
718722
"""
719723
user_id = requester.user.to_string()
720724

@@ -1024,19 +1028,14 @@ async def create_room(
10241028
last_sent_event_id = member_event_id
10251029
depth += 1
10261030

1027-
result = {"room_id": room_id}
1028-
1029-
if room_alias:
1030-
result["room_alias"] = room_alias.to_string()
1031-
10321031
# Always wait for room creation to propagate before returning
10331032
await self._replication.wait_for_stream_position(
10341033
self.hs.config.worker.events_shard_config.get_instance(room_id),
10351034
"events",
10361035
last_stream_id,
10371036
)
10381037

1039-
return result, last_stream_id
1038+
return room_id, room_alias, last_stream_id
10401039

10411040
async def _send_events_for_new_room(
10421041
self,
@@ -1825,7 +1824,7 @@ async def shutdown_room(
18251824
new_room_user_id, authenticated_entity=requester_user_id
18261825
)
18271826

1828-
info, stream_id = await self._room_creation_handler.create_room(
1827+
new_room_id, _, stream_id = await self._room_creation_handler.create_room(
18291828
room_creator_requester,
18301829
config={
18311830
"preset": RoomCreationPreset.PUBLIC_CHAT,
@@ -1834,7 +1833,6 @@ async def shutdown_room(
18341833
},
18351834
ratelimit=False,
18361835
)
1837-
new_room_id = info["room_id"]
18381836

18391837
logger.info(
18401838
"Shutting down room %r, joining to new room: %r", room_id, new_room_id
@@ -1887,6 +1885,7 @@ async def shutdown_room(
18871885

18881886
# Join users to new room
18891887
if new_room_user_id:
1888+
assert new_room_id is not None
18901889
await self.room_member_handler.update_membership(
18911890
requester=target_requester,
18921891
target=target_requester.user,
@@ -1919,6 +1918,7 @@ async def shutdown_room(
19191918

19201919
aliases_for_room = await self.store.get_aliases_for_room(room_id)
19211920

1921+
assert new_room_id is not None
19221922
await self.store.update_aliases_for_room(
19231923
room_id, new_room_id, requester_user_id
19241924
)

synapse/module_api/__init__.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1576,14 +1576,14 @@ async def create_room(
15761576
)
15771577

15781578
requester = create_requester(user_id)
1579-
room_id_and_alias, _ = await self._hs.get_room_creation_handler().create_room(
1579+
room_id, room_alias, _ = await self._hs.get_room_creation_handler().create_room(
15801580
requester=requester,
15811581
config=config,
15821582
ratelimit=ratelimit,
15831583
creator_join_profile=creator_join_profile,
15841584
)
1585-
1586-
return room_id_and_alias["room_id"], room_id_and_alias.get("room_alias", None)
1585+
room_alias_str = room_alias.to_string() if room_alias else None
1586+
return room_id, room_alias_str
15871587

15881588
async def set_displayname(
15891589
self,

synapse/rest/client/room.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,11 +160,11 @@ def on_PUT(
160160
async def on_POST(self, request: SynapseRequest) -> Tuple[int, JsonDict]:
161161
requester = await self.auth.get_user_by_req(request)
162162

163-
info, _ = await self._room_creation_handler.create_room(
163+
room_id, _, _ = await self._room_creation_handler.create_room(
164164
requester, self.get_room_config(request)
165165
)
166166

167-
return 200, info
167+
return 200, {"room_id": room_id}
168168

169169
def get_room_config(self, request: Request) -> JsonDict:
170170
user_supplied_config = parse_json_object_from_request(request)

synapse/server_notices/server_notices_manager.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ async def get_or_create_notice_room_for_user(self, user_id: str) -> str:
178178
"avatar_url": self._config.servernotices.server_notices_mxid_avatar_url,
179179
}
180180

181-
info, _ = await self._room_creation_handler.create_room(
181+
room_id, _, _ = await self._room_creation_handler.create_room(
182182
requester,
183183
config={
184184
"preset": RoomCreationPreset.PRIVATE_CHAT,
@@ -188,7 +188,6 @@ async def get_or_create_notice_room_for_user(self, user_id: str) -> str:
188188
ratelimit=False,
189189
creator_join_profile=join_profile,
190190
)
191-
room_id = info["room_id"]
192191

193192
self.maybe_get_notice_room_for_user.invalidate((user_id,))
194193

tests/storage/test_cleanup_extrems.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,9 @@ def prepare(
4343
# Create a test user and room
4444
self.user = UserID("alice", "test")
4545
self.requester = create_requester(self.user)
46-
info, _ = self.get_success(self.room_creator.create_room(self.requester, {}))
47-
self.room_id = info["room_id"]
46+
self.room_id, _, _ = self.get_success(
47+
self.room_creator.create_room(self.requester, {})
48+
)
4849

4950
def run_background_update(self) -> None:
5051
"""Re run the background update to clean up the extremities."""
@@ -275,10 +276,9 @@ def prepare(
275276
self.user = UserID.from_string(self.register_user("user1", "password"))
276277
self.token1 = self.login("user1", "password")
277278
self.requester = create_requester(self.user)
278-
info, _ = self.get_success(
279+
self.room_id, _, _ = self.get_success(
279280
self.room_creator.create_room(self.requester, {"visibility": "public"})
280281
)
281-
self.room_id = info["room_id"]
282282
self.event_creator = homeserver.get_event_creation_handler()
283283
homeserver.config.consent.user_consent_version = self.CONSENT_VERSION
284284

tests/storage/test_event_metrics.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@ def test_exposed_to_prometheus(self) -> None:
3333
events = [(3, 2), (6, 2), (4, 6)]
3434

3535
for event_count, extrems in events:
36-
info, _ = self.get_success(room_creator.create_room(requester, {}))
37-
room_id = info["room_id"]
36+
room_id, _, _ = self.get_success(room_creator.create_room(requester, {}))
3837

3938
last_event = None
4039

tests/storage/test_receipts.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,14 @@ def prepare(
5050
self.otherRequester = create_requester(self.otherUser)
5151

5252
# Create a test room
53-
info, _ = self.get_success(self.room_creator.create_room(self.ourRequester, {}))
54-
self.room_id1 = info["room_id"]
53+
self.room_id1, _, _ = self.get_success(
54+
self.room_creator.create_room(self.ourRequester, {})
55+
)
5556

5657
# Create a second test room
57-
info, _ = self.get_success(self.room_creator.create_room(self.ourRequester, {}))
58-
self.room_id2 = info["room_id"]
58+
self.room_id2, _, _ = self.get_success(
59+
self.room_creator.create_room(self.ourRequester, {})
60+
)
5961

6062
# Join the second user to the first room
6163
memberEvent, memberEventContext = self.get_success(

tests/test_federation.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:
4747
room_creator.create_room(
4848
our_user, room_creator._presets_dict["public_chat"], ratelimit=False
4949
)
50-
)[0]["room_id"]
50+
)[0]
5151

5252
self.store = self.hs.get_datastores().main
5353

0 commit comments

Comments
 (0)