mirror of
https://mau.dev/maunium/synapse.git
synced 2024-10-01 01:36:05 -04:00
Add get_room_version
method
So that we can start factoring out some of this boilerplatey boilerplate.
This commit is contained in:
parent
d7bf793cc1
commit
08f41a6f05
@ -402,11 +402,9 @@ class UnsupportedRoomVersionError(SynapseError):
|
|||||||
"""The client's request to create a room used a room version that the server does
|
"""The client's request to create a room used a room version that the server does
|
||||||
not support."""
|
not support."""
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self, msg="Homeserver does not support this room version"):
|
||||||
super(UnsupportedRoomVersionError, self).__init__(
|
super(UnsupportedRoomVersionError, self).__init__(
|
||||||
code=400,
|
code=400, msg=msg, errcode=Codes.UNSUPPORTED_ROOM_VERSION,
|
||||||
msg="Homeserver does not support this room version",
|
|
||||||
errcode=Codes.UNSUPPORTED_ROOM_VERSION,
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
# Copyright 2014-2016 OpenMarket Ltd
|
# Copyright 2014-2016 OpenMarket Ltd
|
||||||
|
# Copyright 2020 The Matrix.org Foundation C.I.C.
|
||||||
#
|
#
|
||||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
# you may not use this file except in compliance with the License.
|
# you may not use this file except in compliance with the License.
|
||||||
@ -22,7 +23,8 @@ from six import iteritems
|
|||||||
from twisted.internet import defer
|
from twisted.internet import defer
|
||||||
|
|
||||||
from synapse.api.constants import EventTypes, Membership
|
from synapse.api.constants import EventTypes, Membership
|
||||||
from synapse.api.errors import NotFoundError
|
from synapse.api.errors import NotFoundError, UnsupportedRoomVersionError
|
||||||
|
from synapse.api.room_versions import KNOWN_ROOM_VERSIONS, RoomVersion
|
||||||
from synapse.events import EventBase
|
from synapse.events import EventBase
|
||||||
from synapse.events.snapshot import EventContext
|
from synapse.events.snapshot import EventContext
|
||||||
from synapse.storage._base import SQLBaseStore
|
from synapse.storage._base import SQLBaseStore
|
||||||
@ -61,6 +63,27 @@ class StateGroupWorkerStore(EventsWorkerStore, SQLBaseStore):
|
|||||||
def __init__(self, database: Database, db_conn, hs):
|
def __init__(self, database: Database, db_conn, hs):
|
||||||
super(StateGroupWorkerStore, self).__init__(database, db_conn, hs)
|
super(StateGroupWorkerStore, self).__init__(database, db_conn, hs)
|
||||||
|
|
||||||
|
async def get_room_version(self, room_id: str) -> RoomVersion:
|
||||||
|
"""Get the room_version of a given room
|
||||||
|
|
||||||
|
Raises:
|
||||||
|
NotFoundError: if the room is unknown
|
||||||
|
|
||||||
|
UnsupportedRoomVersionError: if the room uses an unknown room version.
|
||||||
|
Typically this happens if support for the room's version has been
|
||||||
|
removed from Synapse.
|
||||||
|
"""
|
||||||
|
room_version_id = await self.get_room_version_id(room_id)
|
||||||
|
v = KNOWN_ROOM_VERSIONS.get(room_version_id)
|
||||||
|
|
||||||
|
if not v:
|
||||||
|
raise UnsupportedRoomVersionError(
|
||||||
|
"Room %s uses a room version %s which is no longer supported"
|
||||||
|
% (room_id, room_version_id)
|
||||||
|
)
|
||||||
|
|
||||||
|
return v
|
||||||
|
|
||||||
@cached(max_entries=10000)
|
@cached(max_entries=10000)
|
||||||
async def get_room_version_id(self, room_id: str) -> str:
|
async def get_room_version_id(self, room_id: str) -> str:
|
||||||
"""Get the room_version of a given room
|
"""Get the room_version of a given room
|
||||||
|
Loading…
Reference in New Issue
Block a user