diff --git a/synapse/rest/client/v2_alpha/room_keys.py b/synapse/rest/client/v2_alpha/room_keys.py
index 4807170ea6..aee6419179 100644
--- a/synapse/rest/client/v2_alpha/room_keys.py
+++ b/synapse/rest/client/v2_alpha/room_keys.py
@@ -240,9 +240,9 @@ class RoomKeysServlet(RestServlet):
defer.returnValue((200, {}))
-class RoomKeysVersionServlet(RestServlet):
+class RoomKeysNewVersionServlet(RestServlet):
PATTERNS = client_v2_patterns(
- "/room_keys/version(/(?P<version>[^/]+))?$"
+ "/room_keys/version$"
)
def __init__(self, hs):
@@ -250,12 +250,12 @@ class RoomKeysVersionServlet(RestServlet):
Args:
hs (synapse.server.HomeServer): server
"""
- super(RoomKeysVersionServlet, self).__init__()
+ super(RoomKeysNewVersionServlet, self).__init__()
self.auth = hs.get_auth()
self.e2e_room_keys_handler = hs.get_e2e_room_keys_handler()
@defer.inlineCallbacks
- def on_POST(self, request, version):
+ def on_POST(self, request):
"""
Create a new backup version for this user's room_keys with the given
info. The version is allocated by the server and returned to the user
@@ -285,10 +285,6 @@ class RoomKeysVersionServlet(RestServlet):
"version": 12345
}
"""
-
- if version:
- raise SynapseError(405, "Cannot POST to a specific version")
-
requester = yield self.auth.get_user_by_req(request, allow_guest=False)
user_id = requester.user.to_string()
info = parse_json_object_from_request(request)
@@ -301,6 +297,20 @@ class RoomKeysVersionServlet(RestServlet):
# we deliberately don't have a PUT /version, as these things really should
# be immutable to avoid people footgunning
+class RoomKeysVersionServlet(RestServlet):
+ PATTERNS = client_v2_patterns(
+ "/room_keys/version(/(?P<version>[^/]+))?$"
+ )
+
+ def __init__(self, hs):
+ """
+ Args:
+ hs (synapse.server.HomeServer): server
+ """
+ super(RoomKeysVersionServlet, self).__init__()
+ self.auth = hs.get_auth()
+ self.e2e_room_keys_handler = hs.get_e2e_room_keys_handler()
+
@defer.inlineCallbacks
def on_GET(self, request, version):
"""
@@ -320,7 +330,6 @@ class RoomKeysVersionServlet(RestServlet):
"auth_data": "dGhpcyBzaG91bGQgYWN0dWFsbHkgYmUgZW5jcnlwdGVkIGpzb24K"
}
"""
-
requester = yield self.auth.get_user_by_req(request, allow_guest=False)
user_id = requester.user.to_string()
@@ -346,6 +355,8 @@ class RoomKeysVersionServlet(RestServlet):
HTTP/1.1 200 OK
{}
"""
+ if version is None:
+ raise SynapseError(400, "No version specified to delete")
requester = yield self.auth.get_user_by_req(request, allow_guest=False)
user_id = requester.user.to_string()
@@ -359,3 +370,4 @@ class RoomKeysVersionServlet(RestServlet):
def register_servlets(hs, http_server):
RoomKeysServlet(hs).register(http_server)
RoomKeysVersionServlet(hs).register(http_server)
+ RoomKeysNewVersionServlet(hs).register(http_server)
|