From 9076f0ae7262d72e310b9722dcb29273ad8bab24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20St=C3=BCrz?= Date: Thu, 12 May 2016 10:55:42 +0200 Subject: [PATCH] close #325 --- server/jsonrpc/devicehandler.cpp | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/server/jsonrpc/devicehandler.cpp b/server/jsonrpc/devicehandler.cpp index 2d282f92..a3dc5cf1 100644 --- a/server/jsonrpc/devicehandler.cpp +++ b/server/jsonrpc/devicehandler.cpp @@ -160,7 +160,8 @@ DeviceHandler::DeviceHandler(QObject *parent) : setReturns("ConfirmPairing", returns); params.clear(); returns.clear(); - setDescription("GetConfiguredDevices", "Returns a list of configured devices."); + setDescription("GetConfiguredDevices", "Returns a list of configured devices, optionally filtered by deviceId."); + params.insert("o:deviceId", JsonTypes::basicTypeToString(JsonTypes::Uuid)); setParams("GetConfiguredDevices", params); QVariantList devices; devices.append(JsonTypes::deviceRef()); @@ -458,11 +459,20 @@ JsonReply *DeviceHandler::ConfirmPairing(const QVariantMap ¶ms) JsonReply* DeviceHandler::GetConfiguredDevices(const QVariantMap ¶ms) const { - Q_UNUSED(params) QVariantMap returns; QVariantList configuredDeviceList; - foreach (Device *device, GuhCore::instance()->deviceManager()->configuredDevices()) { - configuredDeviceList.append(JsonTypes::packDevice(device)); + if (params.contains("deviceId")) { + Device *device = GuhCore::instance()->deviceManager()->findConfiguredDevice(DeviceId(params.value("deviceId").toString())); + if (!device) { + returns.insert("deviceError", JsonTypes::deviceErrorToString(DeviceManager::DeviceErrorDeviceNotFound)); + return createReply(returns); + } else { + configuredDeviceList.append(JsonTypes::packDevice(device)); + } + } else { + foreach (Device *device, GuhCore::instance()->deviceManager()->configuredDevices()) { + configuredDeviceList.append(JsonTypes::packDevice(device)); + } } returns.insert("devices", configuredDeviceList); return createReply(returns);