Factor _generate_room_id out of create_room
we're going to need this for room upgrades.
This commit is contained in:
parent
cb53ce9d64
commit
871c4abfec
|
@ -165,28 +165,7 @@ class RoomCreationHandler(BaseHandler):
|
||||||
visibility = config.get("visibility", None)
|
visibility = config.get("visibility", None)
|
||||||
is_public = visibility == "public"
|
is_public = visibility == "public"
|
||||||
|
|
||||||
# autogen room IDs and try to create it. We may clash, so just
|
room_id = yield self._generate_room_id(creator_id=user_id, is_public=is_public)
|
||||||
# try a few times till one goes through, giving up eventually.
|
|
||||||
attempts = 0
|
|
||||||
room_id = None
|
|
||||||
while attempts < 5:
|
|
||||||
try:
|
|
||||||
random_string = stringutils.random_string(18)
|
|
||||||
gen_room_id = RoomID(
|
|
||||||
random_string,
|
|
||||||
self.hs.hostname,
|
|
||||||
)
|
|
||||||
yield self.store.store_room(
|
|
||||||
room_id=gen_room_id.to_string(),
|
|
||||||
room_creator_user_id=user_id,
|
|
||||||
is_public=is_public
|
|
||||||
)
|
|
||||||
room_id = gen_room_id.to_string()
|
|
||||||
break
|
|
||||||
except StoreError:
|
|
||||||
attempts += 1
|
|
||||||
if not room_id:
|
|
||||||
raise StoreError(500, "Couldn't generate a room ID.")
|
|
||||||
|
|
||||||
if room_alias:
|
if room_alias:
|
||||||
directory_handler = self.hs.get_handlers().directory_handler
|
directory_handler = self.hs.get_handlers().directory_handler
|
||||||
|
@ -427,6 +406,28 @@ class RoomCreationHandler(BaseHandler):
|
||||||
content=content,
|
content=content,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@defer.inlineCallbacks
|
||||||
|
def _generate_room_id(self, creator_id, is_public):
|
||||||
|
# autogen room IDs and try to create it. We may clash, so just
|
||||||
|
# try a few times till one goes through, giving up eventually.
|
||||||
|
attempts = 0
|
||||||
|
while attempts < 5:
|
||||||
|
try:
|
||||||
|
random_string = stringutils.random_string(18)
|
||||||
|
gen_room_id = RoomID(
|
||||||
|
random_string,
|
||||||
|
self.hs.hostname,
|
||||||
|
).to_string()
|
||||||
|
yield self.store.store_room(
|
||||||
|
room_id=gen_room_id,
|
||||||
|
room_creator_user_id=creator_id,
|
||||||
|
is_public=is_public,
|
||||||
|
)
|
||||||
|
defer.returnValue(gen_room_id)
|
||||||
|
except StoreError:
|
||||||
|
attempts += 1
|
||||||
|
raise StoreError(500, "Couldn't generate a room ID.")
|
||||||
|
|
||||||
|
|
||||||
class RoomContextHandler(object):
|
class RoomContextHandler(object):
|
||||||
def __init__(self, hs):
|
def __init__(self, hs):
|
||||||
|
|
Loading…
Reference in New Issue