.
This commit is contained in:
+1
-1
@@ -136,7 +136,7 @@ void DeviceRepoHandler::__handleInfo(Poco::Net::HTTPServerRequest &req, Poco::Ne
|
|||||||
|
|
||||||
// Iterate over devices
|
// Iterate over devices
|
||||||
Variant result = Variant::List();
|
Variant result = Variant::List();
|
||||||
if (devices.size() > 0) {
|
if (devices.size() > rangeStart) {
|
||||||
for (size_t t = rangeStart; t <= rangeStop; t++) {
|
for (size_t t = rangeStart; t <= rangeStop; t++) {
|
||||||
auto dev = devices[t].lock();
|
auto dev = devices[t].lock();
|
||||||
result.Append(parent->getDeviceInfo(dev.get()));
|
result.Append(parent->getDeviceInfo(dev.get()));
|
||||||
|
|||||||
+168
-32
@@ -52,11 +52,11 @@ RuleEngineHandlerFactory::RuleEngineHandlerFactory(RuleEngineService* ruleServic
|
|||||||
Poco::Net::HTTPResponse::HTTPStatus::HTTP_NOT_FOUND);
|
Poco::Net::HTTPResponse::HTTPStatus::HTTP_NOT_FOUND);
|
||||||
}) {
|
}) {
|
||||||
|
|
||||||
engineInfoFuncs.add("id", [](RuleEngineService* engine, const std::string& category)->Variant {
|
engineInfoFuncs.add("id", [](Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, RuleEngineService* engine, const std::string& category)->Variant {
|
||||||
return engine->getName();
|
return engine->getName();
|
||||||
});
|
});
|
||||||
|
|
||||||
engineInfoFuncs.add("languages", [](RuleEngineService* engine, const std::string& category)->Variant {
|
engineInfoFuncs.add("languages", [](Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, RuleEngineService* engine, const std::string& category)->Variant {
|
||||||
Variant retval = libvariant::Variant::List();
|
Variant retval = libvariant::Variant::List();
|
||||||
for (auto e : engine->getExecutionBackends()) {
|
for (auto e : engine->getExecutionBackends()) {
|
||||||
retval.Append(e->getLanguage());
|
retval.Append(e->getLanguage());
|
||||||
@@ -64,33 +64,38 @@ RuleEngineHandlerFactory::RuleEngineHandlerFactory(RuleEngineService* ruleServic
|
|||||||
return retval;
|
return retval;
|
||||||
});
|
});
|
||||||
|
|
||||||
engineInfoFuncs.add("packages", [this](RuleEngineService* engine, const std::string& category)->Variant {
|
engineInfoFuncs.add("packages", [this](Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, RuleEngineService* engine, const std::string& category)->Variant {
|
||||||
|
bool onlyIds = form.has("onlyids");
|
||||||
Variant retval = libvariant::Variant::List();
|
Variant retval = libvariant::Variant::List();
|
||||||
for (auto r : engine->getRulePackages()) {
|
for (auto r : engine->getRulePackages()) {
|
||||||
if (!r.expired()) {
|
if (!r.expired()) {
|
||||||
retval.Append(getRulePkgInfo(r.lock().get()));
|
if (onlyIds) {
|
||||||
|
retval.Append(r.lock()->getName());
|
||||||
|
} else {
|
||||||
|
retval.Append(getRulePkgInfo(req, form, r.lock().get()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return retval;
|
return retval;
|
||||||
});
|
});
|
||||||
|
|
||||||
pkgInfoFuncs.add("id", [](rules::RulePackage* pkg, const std::string& category)->Variant {
|
pkgInfoFuncs.add("id", [](Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, rules::RulePackage* pkg, const std::string& category)->Variant {
|
||||||
return pkg->getName();
|
return pkg->getName();
|
||||||
});
|
});
|
||||||
|
|
||||||
pkgInfoFuncs.add("parent", [](rules::RulePackage* pkg, const std::string& category)->Variant {
|
pkgInfoFuncs.add("parent", [](Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, rules::RulePackage* pkg, const std::string& category)->Variant {
|
||||||
return pkg->getParent()->getName();
|
return pkg->getParent()->getName();
|
||||||
});
|
});
|
||||||
|
|
||||||
pkgInfoFuncs.add("language", [](rules::RulePackage* pkg, const std::string& category)->Variant {
|
pkgInfoFuncs.add("language", [](Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, rules::RulePackage* pkg, const std::string& category)->Variant {
|
||||||
return pkg->getLanguage();
|
return pkg->getLanguage();
|
||||||
});
|
});
|
||||||
|
|
||||||
pkgInfoFuncs.add("enabled", [](rules::RulePackage* pkg, const std::string& category)->Variant {
|
pkgInfoFuncs.add("enabled", [](Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, rules::RulePackage* pkg, const std::string& category)->Variant {
|
||||||
return pkg->isEnabled();
|
return pkg->isEnabled();
|
||||||
});
|
});
|
||||||
|
|
||||||
pkgInfoFuncs.add("globalcontext", [](rules::RulePackage* pkg, const std::string& category)->Variant {
|
pkgInfoFuncs.add("globalcontext", [](Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, rules::RulePackage* pkg, const std::string& category)->Variant {
|
||||||
auto gc = pkg->getGlobalScriptContext();
|
auto gc = pkg->getGlobalScriptContext();
|
||||||
if (!gc.expired()) {
|
if (!gc.expired()) {
|
||||||
return gc.lock()->getJSONRepresentation();
|
return gc.lock()->getJSONRepresentation();
|
||||||
@@ -99,30 +104,39 @@ RuleEngineHandlerFactory::RuleEngineHandlerFactory(RuleEngineService* ruleServic
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
pkgInfoFuncs.add("rules", [this](rules::RulePackage* pkg, const std::string& category)->Variant {
|
pkgInfoFuncs.add("rules", [this](Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, rules::RulePackage* pkg, const std::string& category)->Variant {
|
||||||
|
bool onlyIds = form.has("onlyids");
|
||||||
Variant retval = libvariant::Variant::List();
|
Variant retval = libvariant::Variant::List();
|
||||||
for (auto r : pkg->getRules()) {
|
for (auto r : pkg->getRules()) {
|
||||||
if (!r.expired()) {
|
if (!r.expired()) {
|
||||||
retval.Append(getRuleInfo(r.lock().get()));
|
if (onlyIds) {
|
||||||
|
retval.Append(r.lock()->getName());
|
||||||
|
} else {
|
||||||
|
retval.Append(getRuleInfo(req, form, r.lock().get()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return retval;
|
return retval;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
ruleInfoFuncs.add("id", [](rules::Rule* rule, const std::string& category)->Variant {
|
ruleInfoFuncs.add("id", [](Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, rules::Rule* rule, const std::string& category)->Variant {
|
||||||
return rule->getName();
|
return rule->getName();
|
||||||
});
|
});
|
||||||
|
|
||||||
ruleInfoFuncs.add("parent", [](rules::Rule* rule, const std::string& category)->Variant {
|
ruleInfoFuncs.add("parent", [](Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, rules::Rule* rule, const std::string& category)->Variant {
|
||||||
return rule->getParent()->getName();
|
return rule->getParent()->getName();
|
||||||
});
|
});
|
||||||
|
|
||||||
ruleInfoFuncs.add("enabled", [](rules::Rule* rule, const std::string& category)->Variant {
|
ruleInfoFuncs.add("enabled", [](Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, rules::Rule* rule, const std::string& category)->Variant {
|
||||||
return rule->isEnabled();
|
return rule->isEnabled();
|
||||||
});
|
});
|
||||||
|
|
||||||
ruleInfoFuncs.add("script", [](rules::Rule* rule, const std::string& category)->Variant {
|
ruleInfoFuncs.add("active", [](Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, rules::Rule* rule, const std::string& category)->Variant {
|
||||||
|
return rule->isActive();
|
||||||
|
});
|
||||||
|
|
||||||
|
ruleInfoFuncs.add("script", [](Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, rules::Rule* rule, const std::string& category)->Variant {
|
||||||
auto script = rule->getScript();
|
auto script = rule->getScript();
|
||||||
if (script) {
|
if (script) {
|
||||||
return script->getJSONRepresentation();
|
return script->getJSONRepresentation();
|
||||||
@@ -131,7 +145,7 @@ RuleEngineHandlerFactory::RuleEngineHandlerFactory(RuleEngineService* ruleServic
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
ruleInfoFuncs.add("exitscript", [](rules::Rule* rule, const std::string& category)->Variant {
|
ruleInfoFuncs.add("exitscript", [](Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, rules::Rule* rule, const std::string& category)->Variant {
|
||||||
auto script = rule->getExitScript();
|
auto script = rule->getExitScript();
|
||||||
if (script) {
|
if (script) {
|
||||||
return script->getJSONRepresentation();
|
return script->getJSONRepresentation();
|
||||||
@@ -140,7 +154,7 @@ RuleEngineHandlerFactory::RuleEngineHandlerFactory(RuleEngineService* ruleServic
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
ruleInfoFuncs.add("condition", [](rules::Rule* rule, const std::string& category)->Variant {
|
ruleInfoFuncs.add("condition", [](Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, rules::Rule* rule, const std::string& category)->Variant {
|
||||||
return rule->getConditionJSONRepresentation();
|
return rule->getConditionJSONRepresentation();
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -153,17 +167,17 @@ Net::HTTPRequestHandler* RuleEngineHandlerFactory::createRequestHandler( Poco::U
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Variant RuleEngineHandlerFactory::getEngineInfo( RuleEngineService* engine, const std::string& category, const std::string& path ) {
|
Variant RuleEngineHandlerFactory::getEngineInfo( Net::HTTPServerRequest& req, Net::HTMLForm& form, RuleEngineService* engine, const std::string& category, const std::string& path ) {
|
||||||
Variant retval;
|
Variant retval;
|
||||||
// We want all info categories
|
// We want all info categories
|
||||||
if (category.empty()) {
|
if (category.empty()) {
|
||||||
engineInfoFuncs.forEach([&](const std::string& key, const Variant& value){
|
engineInfoFuncs.forEach([&](const std::string& key, const Variant& value){
|
||||||
retval[key] = value;
|
retval[key] = value;
|
||||||
}, engine, category);
|
}, req, form, engine, category);
|
||||||
|
|
||||||
// We want a single info category
|
// We want a single info category
|
||||||
} else {
|
} else {
|
||||||
retval = engineInfoFuncs.call(category, engine, category);
|
retval = engineInfoFuncs.call(category, req, form, engine, category);
|
||||||
if (!path.empty()) {
|
if (!path.empty()) {
|
||||||
if (retval.HasPath(path)) {
|
if (retval.HasPath(path)) {
|
||||||
retval = retval.GetPath(path);
|
retval = retval.GetPath(path);
|
||||||
@@ -177,17 +191,17 @@ Variant RuleEngineHandlerFactory::getEngineInfo( RuleEngineService* engine, cons
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Variant RuleEngineHandlerFactory::getRulePkgInfo( rules::RulePackage* pkg, const std::string& category, const std::string& path ) {
|
Variant RuleEngineHandlerFactory::getRulePkgInfo( Net::HTTPServerRequest& req, Net::HTMLForm& form, rules::RulePackage* pkg, const std::string& category, const std::string& path ) {
|
||||||
Variant retval;
|
Variant retval;
|
||||||
// We want all info categories
|
// We want all info categories
|
||||||
if (category.empty()) {
|
if (category.empty()) {
|
||||||
pkgInfoFuncs.forEach([&](const std::string& key, const Variant& value){
|
pkgInfoFuncs.forEach([&](const std::string& key, const Variant& value){
|
||||||
retval[key] = value;
|
retval[key] = value;
|
||||||
}, pkg, category);
|
}, req, form, pkg, category);
|
||||||
|
|
||||||
// We want a single info category
|
// We want a single info category
|
||||||
} else {
|
} else {
|
||||||
retval = pkgInfoFuncs.call(category, pkg, category);
|
retval = pkgInfoFuncs.call(category, req, form, pkg, category);
|
||||||
if (!path.empty()) {
|
if (!path.empty()) {
|
||||||
if (retval.HasPath(path)) {
|
if (retval.HasPath(path)) {
|
||||||
retval = retval.GetPath(path);
|
retval = retval.GetPath(path);
|
||||||
@@ -202,17 +216,17 @@ Variant RuleEngineHandlerFactory::getRulePkgInfo( rules::RulePackage* pkg, const
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
Variant RuleEngineHandlerFactory::getRuleInfo( rules::Rule* rule, const std::string& category, const std::string& path ) {
|
Variant RuleEngineHandlerFactory::getRuleInfo( Net::HTTPServerRequest& req, Net::HTMLForm& form, rules::Rule* rule, const std::string& category, const std::string& path ) {
|
||||||
Variant retval;
|
Variant retval;
|
||||||
// We want all info categories
|
// We want all info categories
|
||||||
if (category.empty()) {
|
if (category.empty()) {
|
||||||
ruleInfoFuncs.forEach([&](const std::string& key, const Variant& value){
|
ruleInfoFuncs.forEach([&](const std::string& key, const Variant& value){
|
||||||
retval[key] = value;
|
retval[key] = value;
|
||||||
}, rule, category);
|
}, req, form, rule, category);
|
||||||
|
|
||||||
// We want a single info category
|
// We want a single info category
|
||||||
} else {
|
} else {
|
||||||
retval = ruleInfoFuncs.call(category, rule, category);
|
retval = ruleInfoFuncs.call(category, req, form, rule, category);
|
||||||
if (!path.empty()) {
|
if (!path.empty()) {
|
||||||
if (retval.HasPath(path)) {
|
if (retval.HasPath(path)) {
|
||||||
retval = retval.GetPath(path);
|
retval = retval.GetPath(path);
|
||||||
@@ -267,14 +281,136 @@ void RuleEngineHandler::__handleInfo(Poco::Net::HTTPServerRequest &req, Poco::Ne
|
|||||||
|
|
||||||
// Nothing given, return engine info
|
// Nothing given, return engine info
|
||||||
if (pathPieces.size() <= matchPieces.size()) {
|
if (pathPieces.size() <= matchPieces.size()) {
|
||||||
handleResponse(req, resp, form, parent->getEngineInfo(ruleService, "", ""));
|
handleResponse(req, resp, form, parent->getEngineInfo(req, form, ruleService, "", ""));
|
||||||
|
|
||||||
// rule package given
|
} else {
|
||||||
} else if (pathPieces.size() == matchPieces.size() + 1) {
|
std::weak_ptr<rules::Rule> rule;
|
||||||
|
std::string firstPiece = pathPieces[matchPieces.size()];
|
||||||
// rule given
|
bool alreadyHandled = false;
|
||||||
} else if (pathPieces.size() == matchPieces.size() + 2) {
|
size_t pathStart = 0;
|
||||||
|
Variant retval;
|
||||||
|
|
||||||
|
if (firstPiece == "packages") {
|
||||||
|
if (pathPieces.size() <= matchPieces.size() + 1) {
|
||||||
|
auto pkgs = ruleService->getRulePackages();
|
||||||
|
// Range header parameter
|
||||||
|
size_t rangeStart = 0;
|
||||||
|
size_t rangeStop = pkgs.size() - 1;
|
||||||
|
getRangeHeaderParameter(req, rangeStart, rangeStop, rangeStop);
|
||||||
|
// Iterate over devices
|
||||||
|
retval = Variant::List();
|
||||||
|
if (pkgs.size() > rangeStart) {
|
||||||
|
for (size_t t = rangeStart; t <= rangeStop; t++) {
|
||||||
|
auto dev = pkgs[t].lock();
|
||||||
|
retval.Append(parent->getRulePkgInfo(req, form, dev.get()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// There are no devices and a range was given, probably out of range
|
||||||
|
if (retval.Size() == 0 && rangeStart > 0) {
|
||||||
|
if (rangeStart > 0) {
|
||||||
|
handleErrorResponse(req, resp, form, "Out of range", Poco::Net::HTTPResponse::HTTP_NOT_FOUND);
|
||||||
|
} else {
|
||||||
|
handleResponse(req, resp, form, retval);
|
||||||
|
}
|
||||||
|
// Return devices array
|
||||||
|
} else {
|
||||||
|
setRangeHeaderParameter(resp, rangeStart, rangeStop, pkgs.size());
|
||||||
|
handleResponse(req, resp, form, retval);
|
||||||
|
}
|
||||||
|
alreadyHandled = true;
|
||||||
|
} else {
|
||||||
|
// Get rule package
|
||||||
|
std::string pkgid = pathPieces[matchPieces.size()+1];
|
||||||
|
auto pkg = ruleService->getRulePackage(pkgid);
|
||||||
|
if (!pkg.expired()) {
|
||||||
|
// Get info category
|
||||||
|
std::string category;
|
||||||
|
pathStart = 5;
|
||||||
|
if (pathPieces.size() > matchPieces.size() + 2) {
|
||||||
|
category = pathPieces[matchPieces.size() + 2];
|
||||||
|
pathStart = 6;
|
||||||
|
}
|
||||||
|
if (category == "rules") {
|
||||||
|
if (pathPieces.size() <= matchPieces.size() + 3) {
|
||||||
|
auto rules = pkg.lock()->getRules();
|
||||||
|
// Range header parameter
|
||||||
|
size_t rangeStart = 0;
|
||||||
|
size_t rangeStop = rules.size() - 1;
|
||||||
|
getRangeHeaderParameter(req, rangeStart, rangeStop, rangeStop);
|
||||||
|
// Iterate over devices
|
||||||
|
retval = Variant::List();
|
||||||
|
if (rules.size() > rangeStart) {
|
||||||
|
for (size_t t = rangeStart; t <= rangeStop; t++) {
|
||||||
|
auto r = rules[t].lock();
|
||||||
|
retval.Append(parent->getRuleInfo(req, form, r.get()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// There are no devices and a range was given, probably out of range
|
||||||
|
if (retval.Size() == 0 && rangeStart > 0) {
|
||||||
|
if (rangeStart > 0) {
|
||||||
|
handleErrorResponse(req, resp, form, "Out of range", Poco::Net::HTTPResponse::HTTP_NOT_FOUND);
|
||||||
|
} else {
|
||||||
|
handleResponse(req, resp, form, retval);
|
||||||
|
}
|
||||||
|
// Return devices array
|
||||||
|
} else {
|
||||||
|
setRangeHeaderParameter(resp, rangeStart, rangeStop, rules.size());
|
||||||
|
handleResponse(req, resp, form, retval);
|
||||||
|
}
|
||||||
|
alreadyHandled = true;
|
||||||
|
} else {
|
||||||
|
// Get rule
|
||||||
|
std::string ruleid = pathPieces[matchPieces.size()+3];
|
||||||
|
auto rule = pkg.lock()->getRule(ruleid);
|
||||||
|
if (!rule.expired()) {
|
||||||
|
// Get info category
|
||||||
|
std::string category;
|
||||||
|
pathStart = 7;
|
||||||
|
if (pathPieces.size() > matchPieces.size() + 4) {
|
||||||
|
category = pathPieces[matchPieces.size() + 4];
|
||||||
|
pathStart = 8;
|
||||||
|
}
|
||||||
|
retval = parent->getRuleInfo(req, form, rule.lock().get(), category);
|
||||||
|
} else {
|
||||||
|
throw webserver::webresource::WebResourceHandlerException((boost::format("Could not find rule \"%1%\"") % ruleid).str(),
|
||||||
|
Poco::Net::HTTPResponse::HTTPStatus::HTTP_NOT_FOUND);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
retval = parent->getRulePkgInfo(req, form, pkg.lock().get(), category);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
throw webserver::webresource::WebResourceHandlerException((boost::format("Could not find rule package \"%1%\"") % pkgid).str(),
|
||||||
|
Poco::Net::HTTPResponse::HTTPStatus::HTTP_NOT_FOUND);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
retval = parent->getEngineInfo(req, form, ruleService, firstPiece, "");
|
||||||
|
}
|
||||||
|
if (!alreadyHandled) {
|
||||||
|
// Get path from url and append pointer parameter
|
||||||
|
std::stringstream pathstream;
|
||||||
|
for (int i = pathStart; i < pathPieces.size(); i++) {
|
||||||
|
pathstream << "/" << pathPieces[i];
|
||||||
|
}
|
||||||
|
std::string pointer;
|
||||||
|
if (getPointerParameter(pointer, form)) {
|
||||||
|
if (pointer.size() > 0 && pointer[0] != '/') {
|
||||||
|
pathstream << "/";
|
||||||
|
}
|
||||||
|
pathstream << pointer;
|
||||||
|
}
|
||||||
|
auto path = pathstream.str();
|
||||||
|
if (!path.empty()) {
|
||||||
|
if (retval.HasPath(path)) {
|
||||||
|
retval = retval.GetPath(path);
|
||||||
|
} else {
|
||||||
|
throw webserver::webresource::WebResourceHandlerException((boost::format("Unknown path \"%1%\".") % path).str(),
|
||||||
|
Poco::Net::HTTPResponse::HTTPStatus::HTTP_NOT_FOUND);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
handleResponse(req, resp, form, retval);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
-6
@@ -79,9 +79,9 @@ public:
|
|||||||
class RuleEngineHandlerFactory
|
class RuleEngineHandlerFactory
|
||||||
: public webserver::webresource::WebResourceHandlerFactoryImpl<RuleEngineHandlerFactory, false, RuleEngineEventQueue> {
|
: public webserver::webresource::WebResourceHandlerFactoryImpl<RuleEngineHandlerFactory, false, RuleEngineEventQueue> {
|
||||||
private:
|
private:
|
||||||
typedef utils::FunctionTable<std::string, libvariant::Variant, RuleEngineService*, const std::string&> engineInfoFuncs_t;
|
typedef utils::FunctionTable<std::string, libvariant::Variant, Poco::Net::HTTPServerRequest&, Poco::Net::HTMLForm&, RuleEngineService*, const std::string&> engineInfoFuncs_t;
|
||||||
typedef utils::FunctionTable<std::string, libvariant::Variant, rules::RulePackage*, const std::string&> pkgInfoFuncs_t;
|
typedef utils::FunctionTable<std::string, libvariant::Variant, Poco::Net::HTTPServerRequest&, Poco::Net::HTMLForm&, rules::RulePackage*, const std::string&> pkgInfoFuncs_t;
|
||||||
typedef utils::FunctionTable<std::string, libvariant::Variant, rules::Rule*, const std::string&> ruleInfoFuncs_t;
|
typedef utils::FunctionTable<std::string, libvariant::Variant, Poco::Net::HTTPServerRequest&, Poco::Net::HTMLForm&, rules::Rule*, const std::string&> ruleInfoFuncs_t;
|
||||||
RuleEngineService* ruleService;
|
RuleEngineService* ruleService;
|
||||||
engineInfoFuncs_t engineInfoFuncs;
|
engineInfoFuncs_t engineInfoFuncs;
|
||||||
pkgInfoFuncs_t pkgInfoFuncs;
|
pkgInfoFuncs_t pkgInfoFuncs;
|
||||||
@@ -92,11 +92,11 @@ public:
|
|||||||
|
|
||||||
virtual Poco::Net::HTTPRequestHandler* createRequestHandler(Poco::URI matchUri, const Poco::Net::HTTPServerRequest& request, bool ssl ) noexcept override;
|
virtual Poco::Net::HTTPRequestHandler* createRequestHandler(Poco::URI matchUri, const Poco::Net::HTTPServerRequest& request, bool ssl ) noexcept override;
|
||||||
|
|
||||||
libvariant::Variant getEngineInfo( RuleEngineService* engine, const std::string& category = "", const std::string& path = "" );
|
libvariant::Variant getEngineInfo( Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, RuleEngineService* engine, const std::string& category = "", const std::string& path = "" );
|
||||||
|
|
||||||
libvariant::Variant getRulePkgInfo( rules::RulePackage* pkg, const std::string& category = "", const std::string& path = "" );
|
libvariant::Variant getRulePkgInfo( Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, rules::RulePackage* pkg, const std::string& category = "", const std::string& path = "" );
|
||||||
|
|
||||||
libvariant::Variant getRuleInfo( rules::Rule* pkg, const std::string& category = "", const std::string& path = "" );
|
libvariant::Variant getRuleInfo( Poco::Net::HTTPServerRequest& req, Poco::Net::HTMLForm& form, rules::Rule* pkg, const std::string& category = "", const std::string& path = "" );
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -6,12 +6,20 @@ define([
|
|||||||
'dstore/SimpleQuery',
|
'dstore/SimpleQuery',
|
||||||
'dstore/Trackable',
|
'dstore/Trackable',
|
||||||
'dstore/Tree',
|
'dstore/Tree',
|
||||||
"dojox/socket",
|
"hos/Socket",
|
||||||
"dojo/_base/xhr",
|
"dojo/request/xhr",
|
||||||
"dojox/uuid/generateRandomUuid"
|
"dojox/uuid/generateRandomUuid"
|
||||||
], function(config, declare, Rest, RequestMemory, SimpleQuery, Trackable, Tree, Socket, xhr, generateRandomUuid){
|
], function(config, declare, Rest, RequestMemory, SimpleQuery, Trackable, Tree, Socket, xhr, generateRandomUuid){
|
||||||
|
|
||||||
var RuleEngineStore = declare([Rest, RequestMemory, SimpleQuery, Trackable, Tree]);
|
var RuleEngineStore = declare([Rest, RequestMemory, SimpleQuery, Trackable, Tree], {
|
||||||
|
_getTarget: function(id){
|
||||||
|
var target = this.target;
|
||||||
|
if(!target.slice(-1) == '/'){
|
||||||
|
target += "/";
|
||||||
|
}
|
||||||
|
return target + "packages" + id;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
var _store = new RuleEngineStore({
|
var _store = new RuleEngineStore({
|
||||||
target: config.hos.ruleEngineUrl
|
target: config.hos.ruleEngineUrl
|
||||||
|
|||||||
@@ -1,29 +0,0 @@
|
|||||||
define([
|
|
||||||
'dojo/_base/declare',
|
|
||||||
'dstore/Rest',
|
|
||||||
'dstore/RequestMemory',
|
|
||||||
'dstore/SimpleQuery',
|
|
||||||
'dstore/Trackable',
|
|
||||||
'hos/Socket',
|
|
||||||
'dojo/_base/xhr',
|
|
||||||
'dojox/uuid/generateRandomUuid'
|
|
||||||
], function(declare, Rest, RequestMemory, SimpleQuery, Trackable, Socket, xhr, generateRandomUuid){
|
|
||||||
|
|
||||||
return declare([Rest, RequestMemory, SimpleQuery, Trackable], {
|
|
||||||
|
|
||||||
sendDeviceCommand: function(id, cmd) {
|
|
||||||
console.log("ToDo: send command", cmd ,"to " + id);
|
|
||||||
var devurl = config.hos.deviceRepoUrl + "/" + id + "?method=command&value=" + encodeURIComponent(JSON.stringify(cmd));
|
|
||||||
xhr.get({url: devurl}).then(function(data){
|
|
||||||
// Do something with the handled data
|
|
||||||
}, function(err){
|
|
||||||
// Handle the error condition
|
|
||||||
}, function(evt){
|
|
||||||
// Handle a progress event from the request if the
|
|
||||||
// browser supports XHR2
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
});
|
|
||||||
@@ -41,7 +41,7 @@
|
|||||||
"dojo/on",
|
"dojo/on",
|
||||||
"dojo/domReady!"
|
"dojo/domReady!"
|
||||||
], function(RuleEngine, domConstruct, dom, on){
|
], function(RuleEngine, domConstruct, dom, on){
|
||||||
var test1 = RuleEngine.get("myid/bla");
|
var test1 = RuleEngine.get("rulepkg01");
|
||||||
console.log("test1: ", test1);
|
console.log("test1: ", test1);
|
||||||
var test2 = RuleEngine.filter({arg01: "param01"});
|
var test2 = RuleEngine.filter({arg01: "param01"});
|
||||||
console.log("test2: ", test2);
|
console.log("test2: ", test2);
|
||||||
|
|||||||
Reference in New Issue
Block a user