/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright (C) 2015 Simon Stürz * * Copyright (C) 2014 Michael Zanetti * * * * This file is part of nymea. * * * * nymea is free software: you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation, version 2 of the License. * * * * nymea is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with nymea. If not, see . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /*! \class nymeaserver::StateHandler \brief This subclass of \l{JsonHandler} processes the JSON requests for the \tt States namespace of the JSON-RPC API. \ingroup json \inmodule core This \l{JsonHandler} will be created in the \l{JsonRPCServer} and used to handle JSON-RPC requests for the \tt {States} namespace of the API. \sa State, JsonHandler, JsonRPCServer */ #include "statehandler.h" #include "nymeacore.h" #include "loggingcategories.h" namespace nymeaserver { /*! Constructs a new \l{StateHandler} with the given \a parent. */ StateHandler::StateHandler(QObject *parent) : JsonHandler(parent) { registerEnum(); registerObject(); registerObject(); // Methods QString description; QVariantMap params; QVariantMap returns; description = "Get the StateType for the given stateTypeId."; params.insert("stateTypeId", enumValueName(Uuid)); returns.insert("deviceError", enumRef()); returns.insert("o:stateType", objectRef()); registerMethod("GetStateType", description, params, returns, true); } /*! Returns the name of the \l{StateHandler}. In this case \b States.*/ QString StateHandler::name() const { return "States"; } JsonReply* StateHandler::GetStateType(const QVariantMap ¶ms) const { QLocale locale = params.value("locale").toLocale(); qCDebug(dcJsonRpc) << "asked for state type" << params; StateTypeId stateTypeId(params.value("stateTypeId").toString()); foreach (const DeviceClass &deviceClass, NymeaCore::instance()->deviceManager()->supportedDevices()) { foreach (const StateType &stateType, deviceClass.stateTypes()) { if (stateType.id() == stateTypeId) { QVariantMap data; data.insert("deviceError", enumValueName(Device::DeviceErrorNoError)); StateType translatedStateType = stateType; translatedStateType.setDisplayName(NymeaCore::instance()->deviceManager()->translate(deviceClass.pluginId(), stateType.displayName(), locale)); data.insert("stateType", pack(translatedStateType)); return createReply(data); } } } QVariantMap data; data.insert("deviceError", enumValueName(Device::DeviceErrorStateTypeNotFound)); return createReply(data); } }