summary refs log tree commit diff
path: root/synapse/rest/admin/federation.py
diff options
context:
space:
mode:
Diffstat (limited to 'synapse/rest/admin/federation.py')
-rw-r--r--synapse/rest/admin/federation.py135
1 files changed, 0 insertions, 135 deletions
diff --git a/synapse/rest/admin/federation.py b/synapse/rest/admin/federation.py
deleted file mode 100644
index 744687be35..0000000000
--- a/synapse/rest/admin/federation.py
+++ /dev/null
@@ -1,135 +0,0 @@
-# Copyright 2021 The Matrix.org Foundation C.I.C.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-import logging
-from http import HTTPStatus
-from typing import TYPE_CHECKING, Tuple
-
-from synapse.api.errors import Codes, NotFoundError, SynapseError
-from synapse.http.servlet import RestServlet, parse_integer, parse_string
-from synapse.http.site import SynapseRequest
-from synapse.rest.admin._base import admin_patterns, assert_requester_is_admin
-from synapse.storage.databases.main.transactions import DestinationSortOrder
-from synapse.types import JsonDict
-
-if TYPE_CHECKING:
-    from synapse.server import HomeServer
-
-logger = logging.getLogger(__name__)
-
-
-class ListDestinationsRestServlet(RestServlet):
-    """Get request to list all destinations.
-    This needs user to have administrator access in Synapse.
-
-    GET /_synapse/admin/v1/federation/destinations?from=0&limit=10
-
-    returns:
-        200 OK with list of destinations if success otherwise an error.
-
-    The parameters `from` and `limit` are required only for pagination.
-    By default, a `limit` of 100 is used.
-    The parameter `destination` can be used to filter by destination.
-    The parameter `order_by` can be used to order the result.
-    """
-
-    PATTERNS = admin_patterns("/federation/destinations$")
-
-    def __init__(self, hs: "HomeServer"):
-        self._auth = hs.get_auth()
-        self._store = hs.get_datastore()
-
-    async def on_GET(self, request: SynapseRequest) -> Tuple[int, JsonDict]:
-        await assert_requester_is_admin(self._auth, request)
-
-        start = parse_integer(request, "from", default=0)
-        limit = parse_integer(request, "limit", default=100)
-
-        if start < 0:
-            raise SynapseError(
-                HTTPStatus.BAD_REQUEST,
-                "Query parameter from must be a string representing a positive integer.",
-                errcode=Codes.INVALID_PARAM,
-            )
-
-        if limit < 0:
-            raise SynapseError(
-                HTTPStatus.BAD_REQUEST,
-                "Query parameter limit must be a string representing a positive integer.",
-                errcode=Codes.INVALID_PARAM,
-            )
-
-        destination = parse_string(request, "destination")
-
-        order_by = parse_string(
-            request,
-            "order_by",
-            default=DestinationSortOrder.DESTINATION.value,
-            allowed_values=[dest.value for dest in DestinationSortOrder],
-        )
-
-        direction = parse_string(request, "dir", default="f", allowed_values=("f", "b"))
-
-        destinations, total = await self._store.get_destinations_paginate(
-            start, limit, destination, order_by, direction
-        )
-        response = {"destinations": destinations, "total": total}
-        if (start + limit) < total:
-            response["next_token"] = str(start + len(destinations))
-
-        return HTTPStatus.OK, response
-
-
-class DestinationsRestServlet(RestServlet):
-    """Get details of a destination.
-    This needs user to have administrator access in Synapse.
-
-    GET /_synapse/admin/v1/federation/destinations/<destination>
-
-    returns:
-        200 OK with details of a destination if success otherwise an error.
-    """
-
-    PATTERNS = admin_patterns("/federation/destinations/(?P<destination>[^/]+)$")
-
-    def __init__(self, hs: "HomeServer"):
-        self._auth = hs.get_auth()
-        self._store = hs.get_datastore()
-
-    async def on_GET(
-        self, request: SynapseRequest, destination: str
-    ) -> Tuple[int, JsonDict]:
-        await assert_requester_is_admin(self._auth, request)
-
-        destination_retry_timings = await self._store.get_destination_retry_timings(
-            destination
-        )
-
-        if not destination_retry_timings:
-            raise NotFoundError("Unknown destination")
-
-        last_successful_stream_ordering = (
-            await self._store.get_destination_last_successful_stream_ordering(
-                destination
-            )
-        )
-
-        response = {
-            "destination": destination,
-            "failure_ts": destination_retry_timings.failure_ts,
-            "retry_last_ts": destination_retry_timings.retry_last_ts,
-            "retry_interval": destination_retry_timings.retry_interval,
-            "last_successful_stream_ordering": last_successful_stream_ordering,
-        }
-
-        return HTTPStatus.OK, response