Split /room_keys/version into 2 servlets

This commit is contained in:
David Baker 2018-10-12 11:35:08 +01:00
parent 83e72bb2f0
commit 86ef9760a7

View File

@ -240,9 +240,9 @@ class RoomKeysServlet(RestServlet):
defer.returnValue((200, {})) defer.returnValue((200, {}))
class RoomKeysVersionServlet(RestServlet): class RoomKeysNewVersionServlet(RestServlet):
PATTERNS = client_v2_patterns( PATTERNS = client_v2_patterns(
"/room_keys/version(/(?P<version>[^/]+))?$" "/room_keys/version$"
) )
def __init__(self, hs): def __init__(self, hs):
@ -250,12 +250,12 @@ class RoomKeysVersionServlet(RestServlet):
Args: Args:
hs (synapse.server.HomeServer): server hs (synapse.server.HomeServer): server
""" """
super(RoomKeysVersionServlet, self).__init__() super(RoomKeysNewVersionServlet, self).__init__()
self.auth = hs.get_auth() self.auth = hs.get_auth()
self.e2e_room_keys_handler = hs.get_e2e_room_keys_handler() self.e2e_room_keys_handler = hs.get_e2e_room_keys_handler()
@defer.inlineCallbacks @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 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 info. The version is allocated by the server and returned to the user
@ -285,10 +285,6 @@ class RoomKeysVersionServlet(RestServlet):
"version": 12345 "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) requester = yield self.auth.get_user_by_req(request, allow_guest=False)
user_id = requester.user.to_string() user_id = requester.user.to_string()
info = parse_json_object_from_request(request) 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 # we deliberately don't have a PUT /version, as these things really should
# be immutable to avoid people footgunning # 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 @defer.inlineCallbacks
def on_GET(self, request, version): def on_GET(self, request, version):
""" """
@ -320,7 +330,6 @@ class RoomKeysVersionServlet(RestServlet):
"auth_data": "dGhpcyBzaG91bGQgYWN0dWFsbHkgYmUgZW5jcnlwdGVkIGpzb24K" "auth_data": "dGhpcyBzaG91bGQgYWN0dWFsbHkgYmUgZW5jcnlwdGVkIGpzb24K"
} }
""" """
requester = yield self.auth.get_user_by_req(request, allow_guest=False) requester = yield self.auth.get_user_by_req(request, allow_guest=False)
user_id = requester.user.to_string() user_id = requester.user.to_string()
@ -346,6 +355,8 @@ class RoomKeysVersionServlet(RestServlet):
HTTP/1.1 200 OK 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) requester = yield self.auth.get_user_by_req(request, allow_guest=False)
user_id = requester.user.to_string() user_id = requester.user.to_string()
@ -359,3 +370,4 @@ class RoomKeysVersionServlet(RestServlet):
def register_servlets(hs, http_server): def register_servlets(hs, http_server):
RoomKeysServlet(hs).register(http_server) RoomKeysServlet(hs).register(http_server)
RoomKeysVersionServlet(hs).register(http_server) RoomKeysVersionServlet(hs).register(http_server)
RoomKeysNewVersionServlet(hs).register(http_server)