diff options
Diffstat (limited to 'synapse/federation/transport/client.py')
-rw-r--r-- | synapse/federation/transport/client.py | 91 |
1 files changed, 12 insertions, 79 deletions
diff --git a/synapse/federation/transport/client.py b/synapse/federation/transport/client.py index 9fc4c31c93..10b5aa5af8 100644 --- a/synapse/federation/transport/client.py +++ b/synapse/federation/transport/client.py @@ -21,7 +21,6 @@ from typing import ( Callable, Collection, Dict, - Generator, Iterable, List, Mapping, @@ -150,42 +149,6 @@ class TransportLayerClient: ) @log_function - async def timestamp_to_event( - self, destination: str, room_id: str, timestamp: int, direction: str - ) -> Union[JsonDict, List]: - """ - Calls a remote federating server at `destination` asking for their - closest event to the given timestamp in the given direction. - - Args: - destination: Domain name of the remote homeserver - room_id: Room to fetch the event from - timestamp: The point in time (inclusive) we should navigate from in - the given direction to find the closest event. - direction: ["f"|"b"] to indicate whether we should navigate forward - or backward from the given timestamp to find the closest event. - - Returns: - Response dict received from the remote homeserver. - - Raises: - Various exceptions when the request fails - """ - path = _create_path( - FEDERATION_UNSTABLE_PREFIX, - "/org.matrix.msc3030/timestamp_to_event/%s", - room_id, - ) - - args = {"ts": [str(timestamp)], "dir": [direction]} - - remote_response = await self.client.get_json( - destination, path=path, args=args, try_trailing_slash_on_400=True - ) - - return remote_response - - @log_function async def send_transaction( self, transaction: Transaction, @@ -236,16 +199,11 @@ class TransportLayerClient: @log_function async def make_query( - self, - destination: str, - query_type: str, - args: dict, - retry_on_dns_fail: bool, - ignore_backoff: bool = False, - ) -> JsonDict: + self, destination, query_type, args, retry_on_dns_fail, ignore_backoff=False + ): path = _create_v1_path("/query/%s", query_type) - return await self.client.get_json( + content = await self.client.get_json( destination=destination, path=path, args=args, @@ -254,6 +212,8 @@ class TransportLayerClient: ignore_backoff=ignore_backoff, ) + return content + @log_function async def make_membership_event( self, @@ -1232,24 +1192,10 @@ class TransportLayerClient: ) async def get_room_hierarchy( - self, destination: str, room_id: str, suggested_only: bool - ) -> JsonDict: - """ - Args: - destination: The remote server - room_id: The room ID to ask about. - suggested_only: if True, only suggested rooms will be returned - """ - path = _create_v1_path("/hierarchy/%s", room_id) - - return await self.client.get_json( - destination=destination, - path=path, - args={"suggested_only": "true" if suggested_only else "false"}, - ) - - async def get_room_hierarchy_unstable( - self, destination: str, room_id: str, suggested_only: bool + self, + destination: str, + room_id: str, + suggested_only: bool, ) -> JsonDict: """ Args: @@ -1321,7 +1267,7 @@ class SendJoinResponse: @ijson.coroutine -def _event_parser(event_dict: JsonDict) -> Generator[None, Tuple[str, Any], None]: +def _event_parser(event_dict: JsonDict): """Helper function for use with `ijson.kvitems_coro` to parse key-value pairs to add them to a given dictionary. """ @@ -1332,9 +1278,7 @@ def _event_parser(event_dict: JsonDict) -> Generator[None, Tuple[str, Any], None @ijson.coroutine -def _event_list_parser( - room_version: RoomVersion, events: List[EventBase] -) -> Generator[None, JsonDict, None]: +def _event_list_parser(room_version: RoomVersion, events: List[EventBase]): """Helper function for use with `ijson.items_coro` to parse an array of events and add them to the given list. """ @@ -1373,26 +1317,15 @@ class SendJoinParser(ByteParser[SendJoinResponse]): prefix + "auth_chain.item", use_float=True, ) - # TODO Remove the unstable prefix when servers have updated. - # - # By re-using the same event dictionary this will cause the parsing of - # org.matrix.msc3083.v2.event and event to stomp over each other. - # Generally this should be fine. - self._coro_unstable_event = ijson.kvitems_coro( - _event_parser(self._response.event_dict), - prefix + "org.matrix.msc3083.v2.event", - use_float=True, - ) self._coro_event = ijson.kvitems_coro( _event_parser(self._response.event_dict), - prefix + "event", + prefix + "org.matrix.msc3083.v2.event", use_float=True, ) def write(self, data: bytes) -> int: self._coro_state.send(data) self._coro_auth.send(data) - self._coro_unstable_event.send(data) self._coro_event.send(data) return len(data) |