complete rules in json api
This commit is contained in:
parent
02c8e6e4b4
commit
0d69170cef
@ -17,9 +17,11 @@ QVariantMap allTypes()
|
|||||||
allTypes.insert("DeviceClass", deviceClassDescription());
|
allTypes.insert("DeviceClass", deviceClassDescription());
|
||||||
allTypes.insert("PluginType", pluginTypeDescription());
|
allTypes.insert("PluginType", pluginTypeDescription());
|
||||||
allTypes.insert("Param", paramDescription());
|
allTypes.insert("Param", paramDescription());
|
||||||
|
allTypes.insert("State", stateDescription());
|
||||||
allTypes.insert("Trigger", triggerDescription());
|
allTypes.insert("Trigger", triggerDescription());
|
||||||
allTypes.insert("Device", deviceDescription());
|
allTypes.insert("Device", deviceDescription());
|
||||||
allTypes.insert("Action", actionDescription());
|
allTypes.insert("Action", actionDescription());
|
||||||
|
allTypes.insert("Rule", ruleDescription());
|
||||||
return allTypes;
|
return allTypes;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -82,6 +84,21 @@ QVariantMap stateTypeDescription()
|
|||||||
return stateTypeDescription;
|
return stateTypeDescription;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString stateRef()
|
||||||
|
{
|
||||||
|
return "$ref:Sate";
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariantMap stateDescription()
|
||||||
|
{
|
||||||
|
QVariantMap stateDescription;
|
||||||
|
stateDescription.insert("stateTypeId", "uuid");
|
||||||
|
stateDescription.insert("deviceId", "uuid");
|
||||||
|
stateDescription.insert("value", "variant");
|
||||||
|
return stateDescription;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
QString triggerTypeRef()
|
QString triggerTypeRef()
|
||||||
{
|
{
|
||||||
return "$ref:TriggerType";
|
return "$ref:TriggerType";
|
||||||
@ -126,7 +143,7 @@ QVariantMap triggerDescription()
|
|||||||
QVariantMap packTrigger(const Trigger &trigger)
|
QVariantMap packTrigger(const Trigger &trigger)
|
||||||
{
|
{
|
||||||
QVariantMap variant;
|
QVariantMap variant;
|
||||||
variant.insert("id", trigger.triggerTypeId());
|
variant.insert("triggerTypeId", trigger.triggerTypeId());
|
||||||
variant.insert("deviceId", trigger.deviceId());
|
variant.insert("deviceId", trigger.deviceId());
|
||||||
variant.insert("params", trigger.params());
|
variant.insert("params", trigger.params());
|
||||||
return variant;
|
return variant;
|
||||||
@ -294,6 +311,27 @@ QVariantMap packDevice(Device *device)
|
|||||||
return variant;
|
return variant;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString ruleRef()
|
||||||
|
{
|
||||||
|
return "$ref:Rule";
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariantMap ruleDescription()
|
||||||
|
{
|
||||||
|
QVariantMap ruleDescription;
|
||||||
|
ruleDescription.insert("id", "uuid");
|
||||||
|
ruleDescription.insert("trigger", triggerRef());
|
||||||
|
QVariantList actions;
|
||||||
|
actions.append(actionRef());
|
||||||
|
ruleDescription.insert("actions", actions);
|
||||||
|
QVariantList states;
|
||||||
|
states.append(stateRef());
|
||||||
|
ruleDescription.insert("states", states);
|
||||||
|
return ruleDescription;
|
||||||
|
}
|
||||||
|
|
||||||
|
//QVariantMap packRule(const Rule &rule);
|
||||||
|
|
||||||
bool validateMap(const QVariantMap &templateMap, const QVariantMap &map)
|
bool validateMap(const QVariantMap &templateMap, const QVariantMap &map)
|
||||||
{
|
{
|
||||||
foreach (const QString &key, templateMap.keys()) {
|
foreach (const QString &key, templateMap.keys()) {
|
||||||
@ -390,7 +428,12 @@ bool validateVariant(const QVariant &templateVariant, const QVariant &variant)
|
|||||||
}
|
}
|
||||||
} else if (refName == pluginTypeRef()) {
|
} else if (refName == pluginTypeRef()) {
|
||||||
if (!validateMap(pluginTypeDescription(), variant.toMap())) {
|
if (!validateMap(pluginTypeDescription(), variant.toMap())) {
|
||||||
qDebug() << "plugin type not matchint";
|
qDebug() << "plugin type not matching";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
} else if (refName == ruleRef()) {
|
||||||
|
if (!validateMap(ruleDescription(), variant.toMap())) {
|
||||||
|
qDebug() << "rule type not matching";
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
} else if (refName == basicTypesRef()) {
|
} else if (refName == basicTypesRef()) {
|
||||||
|
|||||||
@ -29,6 +29,9 @@ namespace JsonTypes
|
|||||||
QString stateTypeRef();
|
QString stateTypeRef();
|
||||||
QVariantMap stateTypeDescription();
|
QVariantMap stateTypeDescription();
|
||||||
|
|
||||||
|
QString stateRef();
|
||||||
|
QVariantMap stateDescription();
|
||||||
|
|
||||||
QString triggerTypeRef();
|
QString triggerTypeRef();
|
||||||
QVariantMap triggerTypeDescription();
|
QVariantMap triggerTypeDescription();
|
||||||
QVariantMap packTriggerType(const TriggerType &triggerType);
|
QVariantMap packTriggerType(const TriggerType &triggerType);
|
||||||
@ -57,6 +60,10 @@ namespace JsonTypes
|
|||||||
QVariantMap deviceDescription();
|
QVariantMap deviceDescription();
|
||||||
QVariantMap packDevice(Device *device);
|
QVariantMap packDevice(Device *device);
|
||||||
|
|
||||||
|
QString ruleRef();
|
||||||
|
QVariantMap ruleDescription();
|
||||||
|
// QVariantMap packRule(const Rule &rule);
|
||||||
|
|
||||||
bool validateMap(const QVariantMap &templateMap, const QVariantMap &map);
|
bool validateMap(const QVariantMap &templateMap, const QVariantMap &map);
|
||||||
bool validateProperty(const QVariant &templateValue, const QVariant &value);
|
bool validateProperty(const QVariant &templateValue, const QVariant &value);
|
||||||
bool validateList(const QVariantList &templateList, const QVariantList &list);
|
bool validateList(const QVariantList &templateList, const QVariantList &list);
|
||||||
|
|||||||
@ -14,6 +14,9 @@ RulesHandler::RulesHandler(QObject *parent) :
|
|||||||
params.clear(); returns.clear();
|
params.clear(); returns.clear();
|
||||||
setDescription("GetRules", "Get all configured rules");
|
setDescription("GetRules", "Get all configured rules");
|
||||||
setParams("GetRules", params);
|
setParams("GetRules", params);
|
||||||
|
QVariantList rules;
|
||||||
|
rules.append(JsonTypes::ruleRef());
|
||||||
|
returns.insert("rules", rules);
|
||||||
setReturns("GetRules", returns);
|
setReturns("GetRules", returns);
|
||||||
|
|
||||||
params.clear(); returns.clear();
|
params.clear(); returns.clear();
|
||||||
@ -46,8 +49,11 @@ QVariantMap RulesHandler::GetRules(const QVariantMap ¶ms)
|
|||||||
foreach (const Action &action, rule.actions()) {
|
foreach (const Action &action, rule.actions()) {
|
||||||
actionList.append(JsonTypes::packAction(action));
|
actionList.append(JsonTypes::packAction(action));
|
||||||
}
|
}
|
||||||
|
|
||||||
ruleMap.insert("actions", actionList);
|
ruleMap.insert("actions", actionList);
|
||||||
|
|
||||||
|
QVariantList states;
|
||||||
|
ruleMap.insert("states", states);
|
||||||
|
|
||||||
rulesList.append(ruleMap);
|
rulesList.append(ruleMap);
|
||||||
}
|
}
|
||||||
QVariantMap returns;
|
QVariantMap returns;
|
||||||
|
|||||||
Reference in New Issue
Block a user