/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright (C) 2015 Simon Stuerz * * Copyright (C) 2014 Michael Zanetti * * * * This file is part of guh. * * * * Guh 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. * * * * Guh 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 guh. If not, see . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /*! \class guhserver::EventHandler \brief This subclass of \l{JsonHandler} processes the JSON requests for the \tt Events namespace. \ingroup json \inmodule core This \l{JsonHandler} will be created in the \l{JsonRPCServer} and used to handle JSON-RPC requests for the \tt {Events} namespace of the API. \sa Event, JsonHandler, JsonRPCServer */ #include "eventhandler.h" #include "guhcore.h" #include "loggingcategories.h" namespace guhserver { EventHandler::EventHandler(QObject *parent) : JsonHandler(parent) { QVariantMap params; QVariantMap returns; // Notifications params.clear(); returns.clear(); setDescription("EventTriggered", "Emitted whenever an Event is triggered."); params.insert("event", JsonTypes::eventRef()); setParams("EventTriggered", params); params.clear(); returns.clear(); setDescription("GetEventType", "Get the EventType for the given eventTypeId."); params.insert("eventTypeId", JsonTypes::basicTypeToString(JsonTypes::Uuid)); setParams("GetEventType", params); returns.insert("deviceError", JsonTypes::deviceErrorRef()); returns.insert("o:eventType", JsonTypes::eventTypeRef()); setReturns("GetEventType", returns); connect(GuhCore::instance(), &GuhCore::eventTriggered, this, &EventHandler::eventTriggered); } QString EventHandler::name() const { return "Events"; } void EventHandler::eventTriggered(const Event &event) { QVariantMap params; params.insert("event", JsonTypes::packEvent(event)); emit EventTriggered(params); } JsonReply* EventHandler::GetEventType(const QVariantMap ¶ms) const { qCDebug(dcJsonRpc) << "asked for event type" << params; EventTypeId eventTypeId(params.value("eventTypeId").toString()); foreach (const DeviceClass &deviceClass, GuhCore::instance()->supportedDevices()) { foreach (const EventType &eventType, deviceClass.eventTypes()) { if (eventType.id() == eventTypeId) { QVariantMap data = statusToReply(DeviceManager::DeviceErrorNoError); data.insert("eventType", JsonTypes::packEventType(eventType)); return createReply(data); } } } return createReply(statusToReply(DeviceManager::DeviceErrorEventTypeNotFound)); } }