diff options
author | David Baker <dbkr@users.noreply.github.com> | 2016-07-21 11:54:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-07-21 11:54:47 +0100 |
commit | 44adde498e07681e7ca4d672e3fa471865e92046 (patch) | |
tree | a7a3bf8ad3a6b4cd02d3dde34196626095b66191 /synapse/storage/devices.py | |
parent | Merge pull request #938 from matrix-org/rav/add_device_id_to_client_ips (diff) | |
parent | Fix PEP8 errors (diff) | |
download | synapse-44adde498e07681e7ca4d672e3fa471865e92046.tar.xz |
Merge pull request #939 from matrix-org/rav/get_devices_api
GET /devices endpoint
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}) |