diff options
author | Richard van der Hoff <richard@matrix.org> | 2016-07-20 16:34:00 +0100 |
---|---|---|
committer | Richard van der Hoff <richard@matrix.org> | 2016-07-20 16:42:32 +0100 |
commit | bc8f265f0a8443e918b17a94f4b2fa319e70a21f (patch) | |
tree | 78d0a5d38d1c5edb9a9600a532500248f987c90d /synapse/storage/devices.py | |
parent | More doc-comments (diff) | |
download | synapse-bc8f265f0a8443e918b17a94f4b2fa319e70a21f.tar.xz |
GET /devices endpoint
implement a GET /devices endpoint which lists all of the user's devices. It also returns the last IP where we saw that device, so there is some dancing to fish that out of the user_ips table.
Diffstat (limited to 'synapse/storage/devices.py')
-rw-r--r-- | synapse/storage/devices.py | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/synapse/storage/devices.py b/synapse/storage/devices.py index 9065e96d28..1cc6e07f2b 100644 --- a/synapse/storage/devices.py +++ b/synapse/storage/devices.py @@ -65,7 +65,7 @@ class DeviceStore(SQLBaseStore): user_id (str): The ID of the user which owns the device device_id (str): The ID of the device to retrieve Returns: - defer.Deferred for a namedtuple containing the device information + defer.Deferred for a dict containing the device information Raises: StoreError: if the device is not found """ @@ -75,3 +75,23 @@ class DeviceStore(SQLBaseStore): retcols=("user_id", "device_id", "display_name"), desc="get_device", ) + + @defer.inlineCallbacks + def get_devices_by_user(self, user_id): + """Retrieve all of a user's registered devices. + + Args: + user_id (str): + Returns: + defer.Deferred: resolves to a dict from device_id to a dict + containing "device_id", "user_id" and "display_name" for each + device. + """ + devices = yield self._simple_select_list( + table="devices", + keyvalues={"user_id": user_id}, + retcols=("user_id", "device_id", "display_name"), + desc="get_devices_by_user" + ) + + defer.returnValue({d["device_id"]: d for d in devices}) |