add getconfigureddevices json api

This commit is contained in:
Michael Zanetti 2013-12-31 02:11:46 +01:00
parent 514323ce5d
commit 0faa329df9
2 changed files with 25 additions and 1 deletions

View File

@ -5,6 +5,7 @@
#include "hivecore.h"
#include "devicemanager.h"
#include "deviceclass.h"
#include "device.h"
#include <QJsonDocument>
#include <QStringList>
@ -51,7 +52,6 @@ void JsonRPCServer::processData(int clientId, const QByteArray &jsonData)
if (targetNamspace == "Devices") {
if (method == "GetSupportedDevices") {
qDebug() << "getSupportedDevices";
QVariantMap params;
QVariantList supportedDeviceList;
foreach (const DeviceClass &deviceClass, HiveCore::instance()->deviceManager()->supportedDevices()) {
@ -74,6 +74,14 @@ void JsonRPCServer::processData(int clientId, const QByteArray &jsonData)
sendErrorResponse(clientId, commandId, "Error creating device. Missing parameter.");
break;
}
} else if (method == "GetConfiguredDevices") {
QVariantMap params;
QVariantList configuredDeviceList;
foreach (Device *device, HiveCore::instance()->deviceManager()->configuredDevices()) {
configuredDeviceList.append(packDevice(device));
}
params.insert("devices", configuredDeviceList);
sendResponse(clientId, commandId, params);
} else {
sendErrorResponse(clientId, commandId, "No such method");
}
@ -101,6 +109,20 @@ QVariantMap JsonRPCServer::packDeviceClass(const DeviceClass &deviceClass)
return variant;
}
QVariantMap JsonRPCServer::packDevice(Device *device)
{
QVariantMap variant;
variant.insert("id", device->id());
variant.insert("deviceClassId", device->deviceClassId());
variant.insert("name", device->name());
QVariantList triggers;
foreach (const Trigger &trigger, device->triggers()) {
triggers.append(trigger.id());
}
variant.insert("triggers", triggers);
return variant;
}
void JsonRPCServer::sendResponse(int clientId, int commandId, const QVariantMap &params)
{
QVariantMap rsp;

View File

@ -8,6 +8,7 @@
#include <QString>
class TcpServer;
class Device;
class JsonRPCServer: public QObject
{
@ -23,6 +24,7 @@ private slots:
private:
QVariantMap packDeviceClass(const DeviceClass &deviceClass);
QVariantMap packDevice(Device *device);
void sendResponse(int clientId, int commandId, const QVariantMap &params = QVariantMap());
void sendErrorResponse(int clientId, int commandId, const QString &error);