Axe the PublicRoomsManager and switch to passing the ModuleApi
parent
699fa5b61e
commit
f5b6246f3a
|
@ -16,46 +16,10 @@ from typing import Callable
|
||||||
|
|
||||||
from synapse.events import EventBase
|
from synapse.events import EventBase
|
||||||
from synapse.events.snapshot import EventContext
|
from synapse.events.snapshot import EventContext
|
||||||
|
from synapse.module_api import ModuleApi
|
||||||
from synapse.types import Requester, StateMap
|
from synapse.types import Requester, StateMap
|
||||||
|
|
||||||
|
|
||||||
class PublicRoomsManager:
|
|
||||||
def __init__(self, hs):
|
|
||||||
self._store = hs.get_datastore()
|
|
||||||
|
|
||||||
async def room_is_in_public_directory(self, room_id: str) -> bool:
|
|
||||||
"""Checks whether a room is in the public rooms directory.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
room_id: The ID of the room.
|
|
||||||
|
|
||||||
Returns:
|
|
||||||
Whether the room is in the public rooms directory. Additionally returns False
|
|
||||||
if the room does not exist.
|
|
||||||
"""
|
|
||||||
room = await self._store.get_room(room_id)
|
|
||||||
if not room:
|
|
||||||
return False
|
|
||||||
|
|
||||||
return room.get("is_public", False)
|
|
||||||
|
|
||||||
async def add_room_to_public_directory(self, room_id: str) -> None:
|
|
||||||
"""Publishes a room to the public rooms directory.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
room_id: The ID of the room.
|
|
||||||
"""
|
|
||||||
await self._store.set_room_is_public(room_id, True)
|
|
||||||
|
|
||||||
async def remove_room_from_public_directory(self, room_id: str) -> None:
|
|
||||||
"""Removes a room from the public rooms directory.
|
|
||||||
|
|
||||||
Args:
|
|
||||||
room_id: The ID of the room.
|
|
||||||
"""
|
|
||||||
await self._store.set_room_is_public(room_id, False)
|
|
||||||
|
|
||||||
|
|
||||||
class ThirdPartyEventRules:
|
class ThirdPartyEventRules:
|
||||||
"""Allows server admins to provide a Python module implementing an extra
|
"""Allows server admins to provide a Python module implementing an extra
|
||||||
set of rules to apply when processing events.
|
set of rules to apply when processing events.
|
||||||
|
@ -76,9 +40,7 @@ class ThirdPartyEventRules:
|
||||||
|
|
||||||
if module is not None:
|
if module is not None:
|
||||||
self.third_party_rules = module(
|
self.third_party_rules = module(
|
||||||
config=config,
|
config=config, module_api=ModuleApi(hs, hs.get_auth_handler()),
|
||||||
http_client=hs.get_simple_http_client(),
|
|
||||||
public_room_manager=PublicRoomsManager(hs),
|
|
||||||
)
|
)
|
||||||
|
|
||||||
async def check_event_allowed(
|
async def check_event_allowed(
|
||||||
|
|
|
@ -17,6 +17,7 @@ import logging
|
||||||
|
|
||||||
from twisted.internet import defer
|
from twisted.internet import defer
|
||||||
|
|
||||||
|
from synapse.http.client import SimpleHttpClient
|
||||||
from synapse.http.site import SynapseRequest
|
from synapse.http.site import SynapseRequest
|
||||||
from synapse.logging.context import make_deferred_yieldable, run_in_background
|
from synapse.logging.context import make_deferred_yieldable, run_in_background
|
||||||
from synapse.types import UserID
|
from synapse.types import UserID
|
||||||
|
@ -43,6 +44,8 @@ class ModuleApi:
|
||||||
self._auth = hs.get_auth()
|
self._auth = hs.get_auth()
|
||||||
self._auth_handler = auth_handler
|
self._auth_handler = auth_handler
|
||||||
|
|
||||||
|
self.http_client = hs.get_simple_http_client() # type: SimpleHttpClient
|
||||||
|
|
||||||
def get_user_by_req(self, req, allow_guest=False):
|
def get_user_by_req(self, req, allow_guest=False):
|
||||||
"""Check the access_token provided for a request
|
"""Check the access_token provided for a request
|
||||||
|
|
||||||
|
@ -266,3 +269,35 @@ class ModuleApi:
|
||||||
await self._auth_handler.complete_sso_login(
|
await self._auth_handler.complete_sso_login(
|
||||||
registered_user_id, request, client_redirect_url,
|
registered_user_id, request, client_redirect_url,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
async def room_is_in_public_directory(self, room_id: str) -> bool:
|
||||||
|
"""Checks whether a room is in the public rooms directory.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
room_id: The ID of the room.
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Whether the room is in the public rooms directory. Returns False
|
||||||
|
if the room does not exist.
|
||||||
|
"""
|
||||||
|
room = await self._store.get_room(room_id)
|
||||||
|
if not room:
|
||||||
|
return False
|
||||||
|
|
||||||
|
return room.get("is_public", False)
|
||||||
|
|
||||||
|
async def add_room_to_public_directory(self, room_id: str) -> None:
|
||||||
|
"""Publishes a room to the public rooms directory.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
room_id: The ID of the room.
|
||||||
|
"""
|
||||||
|
await self._store.set_room_is_public(room_id, True)
|
||||||
|
|
||||||
|
async def remove_room_from_public_directory(self, room_id: str) -> None:
|
||||||
|
"""Removes a room from the public rooms directory.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
room_id: The ID of the room.
|
||||||
|
"""
|
||||||
|
await self._store.set_room_is_public(room_id, False)
|
||||||
|
|
Loading…
Reference in New Issue