nymea/libnymea-core/cloud/cloudnotifications.cpp

156 lines
6.3 KiB
C++

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
*
* Copyright 2013 - 2020, nymea GmbH
* Contact: contact@nymea.io
*
* This file is part of nymea.
* This project including source code and documentation is protected by
* copyright law, and remains the property of nymea GmbH. All rights, including
* reproduction, publication, editing and translation, are reserved. The use of
* this project is subject to the terms of a license agreement to be concluded
* with nymea GmbH in accordance with the terms of use of nymea GmbH, available
* under https://nymea.io/license
*
* GNU General Public License Usage
* Alternatively, this project may be redistributed and/or modified under the
* terms of the GNU General Public License as published by the Free Software
* Foundation, GNU version 3. This project 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
* this project. If not, see <https://www.gnu.org/licenses/>.
*
* For any further details and any questions please contact us under
* contact@nymea.io or see our FAQ/Licensing Information on
* https://nymea.io/license/faq
*
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
#include "cloudnotifications.h"
#include "loggingcategories.h"
#include "integrations/thingsetupinfo.h"
#include "integrations/thingactioninfo.h"
#include <QDebug>
#include <QJsonObject>
ThingClassId cloudNotificationsThingClassId = ThingClassId("81c1bbcc-543a-48fd-bd18-ab6a76f9c38d");
ParamTypeId cloudNotificationsThingClassUserParamId = ParamTypeId("5bdeaf08-91a9-42bc-a9f9-ef6b02ecaa3c");
ParamTypeId cloudNotificationsThingClassEndpointParamId = ParamTypeId("e7c41785-dd3b-4f46-b5b4-1f8a7d060ddd");
ActionTypeId notifyActionTypeId = ActionTypeId("211d1f25-28e7-4eba-8938-b29de0e41571");
ParamTypeId notifyActionParamTitleId = ParamTypeId("096503fc-b343-4d7f-8387-96162faf0f8e");
ParamTypeId notifyActionParamBodyId = ParamTypeId("4bd0fa87-c663-4621-8040-99b6d535387c");
StateTypeId connectedStateTypeId = StateTypeId("518e27b6-c3bf-49d7-be24-05ae978c00f7");
CloudNotifications::CloudNotifications(QObject *parent):
IntegrationPlugin(parent)
{
// Metadata is just kept for now to not cause any dead things in the system. To be removed in 0.31 or so
QVariantMap pluginMetaData;
pluginMetaData.insert("id", "ccc6dbc8-e352-48a1-8e87-3c89a4669fc2");
pluginMetaData.insert("name", "CloudNotifications");
pluginMetaData.insert("displayName", tr("Cloud Notifications"));
QVariantList interfaces;
interfaces.append("notifications");
interfaces.append("connectable");
QVariantList createMethods;
createMethods.append("auto");
QVariantMap userIdParam;
userIdParam.insert("id", cloudNotificationsThingClassUserParamId);
userIdParam.insert("name", "userId");
userIdParam.insert("displayName", tr("User ID"));
userIdParam.insert("type", "QString");
QVariantMap endpointIdParam;
endpointIdParam.insert("id", cloudNotificationsThingClassEndpointParamId);
endpointIdParam.insert("name", "endpoint");
endpointIdParam.insert("displayName", tr("Device"));
endpointIdParam.insert("type", "QString");
QVariantList cloudNotificationThingClassParamTypes;
cloudNotificationThingClassParamTypes.append(userIdParam);
cloudNotificationThingClassParamTypes.append(endpointIdParam);
QVariantMap notifyActionParamTitle;
notifyActionParamTitle.insert("id", notifyActionParamTitleId);
notifyActionParamTitle.insert("name", "title");
notifyActionParamTitle.insert("displayName", tr("Title"));
notifyActionParamTitle.insert("type", "QString");
QVariantMap notifyActionParamBody;
notifyActionParamBody.insert("id", notifyActionParamBodyId);
notifyActionParamBody.insert("name", "body");
notifyActionParamBody.insert("displayName", tr("Message text"));
notifyActionParamBody.insert("type", "QString");
QVariantList notifyActionParamTypes;
notifyActionParamTypes.append(notifyActionParamTitle);
notifyActionParamTypes.append(notifyActionParamBody);
QVariantMap notifyAction;
notifyAction.insert("id", notifyActionTypeId);
notifyAction.insert("name", "notify");
notifyAction.insert("displayName", tr("Send notification"));
notifyAction.insert("paramTypes", notifyActionParamTypes);
QVariantList actionTypes;
actionTypes.append(notifyAction);
QVariantMap connectedState;
connectedState.insert("id", connectedStateTypeId);
connectedState.insert("name", "connected");
connectedState.insert("displayName", tr("connected"));
connectedState.insert("type", "bool");
connectedState.insert("defaultValue", false);
QVariantList stateTypes;
stateTypes.append(connectedState);
QVariantMap cloudNotificationsThingClass;
cloudNotificationsThingClass.insert("id", cloudNotificationsThingClassId);
cloudNotificationsThingClass.insert("name", "cloudNotifications");
cloudNotificationsThingClass.insert("displayName", tr("Cloud Notifications"));
cloudNotificationsThingClass.insert("createMethods", createMethods);
cloudNotificationsThingClass.insert("paramTypes", cloudNotificationThingClassParamTypes);
cloudNotificationsThingClass.insert("interfaces", interfaces);
cloudNotificationsThingClass.insert("actionTypes", actionTypes);
cloudNotificationsThingClass.insert("stateTypes", stateTypes);
QVariantList thingClasses;
thingClasses.append(cloudNotificationsThingClass);
QVariantMap guhVendor;
guhVendor.insert("id", "2062d64d-3232-433c-88bc-0d33c0ba2ba6"); // nymea's id
guhVendor.insert("name", "nymea");
guhVendor.insert("displayName", "nymea");
guhVendor.insert("thingClasses", thingClasses);
QVariantList vendors;
vendors.append(guhVendor);
pluginMetaData.insert("vendors", vendors);
setMetaData(PluginMetadata(QJsonObject::fromVariantMap(pluginMetaData), true));
}
void CloudNotifications::setupThing(ThingSetupInfo *info)
{
// Just finishing the setup for any old existing things to not throw any errors
info->finish(Thing::ThingErrorNoError);
}
void CloudNotifications::postSetupThing(Thing *thing)
{
// And make it go away...
emit autoThingDisappeared(thing->id());
}