summary refs log tree commit diff
path: root/synapse/rest/client/v2_alpha
diff options
context:
space:
mode:
authorLuke Barnard <lukeb@openmarket.com>2017-03-13 17:53:23 +0000
committerLuke Barnard <lukeb@openmarket.com>2017-03-13 17:53:23 +0000
commitbbeeb97f753e158e9aadd53aff78b076d756917c (patch)
tree53004e3859d9e4078d7f86bcf92d3e705a700ea3 /synapse/rest/client/v2_alpha
parentFlake (diff)
downloadsynapse-bbeeb97f753e158e9aadd53aff78b076d756917c.tar.xz
Implement _simple_delete_many_txn, use it to delete devices
(But this doesn't implement the same for deleting access tokens or e2e keys.

Also respond to code review.
Diffstat (limited to 'synapse/rest/client/v2_alpha')
-rw-r--r--synapse/rest/client/v2_alpha/devices.py20
1 files changed, 9 insertions, 11 deletions
diff --git a/synapse/rest/client/v2_alpha/devices.py b/synapse/rest/client/v2_alpha/devices.py
index fd9516a601..b57ba95d24 100644
--- a/synapse/rest/client/v2_alpha/devices.py
+++ b/synapse/rest/client/v2_alpha/devices.py
@@ -47,13 +47,13 @@ class DevicesRestServlet(servlet.RestServlet):
 
 
 class DeleteDevicesRestServlet(servlet.RestServlet):
+    """
+    API for bulk deletion of devices. Accepts a JSON object with a devices
+    key which lists the device_ids to delete. Requires user interactive auth.
+    """
     PATTERNS = client_v2_patterns("/delete_devices", releases=[], v2_alpha=False)
 
     def __init__(self, hs):
-        """
-        Args:
-            hs (synapse.server.HomeServer): server
-        """
         super(DeleteDevicesRestServlet, self).__init__()
         self.hs = hs
         self.auth = hs.get_auth()
@@ -64,14 +64,13 @@ class DeleteDevicesRestServlet(servlet.RestServlet):
     def on_POST(self, request):
         try:
             body = servlet.parse_json_object_from_request(request)
-
         except errors.SynapseError as e:
             if e.errcode == errors.Codes.NOT_JSON:
                 # deal with older clients which didn't pass a J*DELETESON dict
                 # the same as those that pass an empty dict
                 body = {}
             else:
-                raise
+                raise e
 
         if 'devices' not in body:
             raise errors.SynapseError(
@@ -86,11 +85,10 @@ class DeleteDevicesRestServlet(servlet.RestServlet):
             defer.returnValue((401, result))
 
         requester = yield self.auth.get_user_by_req(request)
-        for d_id in body['devices']:
-            yield self.device_handler.delete_device(
-                requester.user.to_string(),
-                d_id,
-            )
+        yield self.device_handler.delete_devices(
+            requester.user.to_string(),
+            body['devices'],
+        )
         defer.returnValue((200, {}))