add REST plugins, rules and vendors error handling

bump api version
pull/135/head
Simon Stürz 2015-09-27 15:27:58 +02:00 committed by Michael Zanetti
parent 8cd6866ffb
commit bae722abc3
4 changed files with 36 additions and 35 deletions

View File

@ -47,7 +47,7 @@ HttpReply *PluginsResource::proccessRequest(const HttpRequest &request, const QS
m_pluginId = PluginId(urlTokens.at(3));
if (m_pluginId.isNull()) {
qCWarning(dcRest) << "Could not parse PluginId:" << urlTokens.at(3);
return createErrorReply(HttpReply::BadRequest);
return createDeviceErrorReply(HttpReply::BadRequest, DeviceManager::DeviceErrorPluginNotFound);
}
}
@ -127,7 +127,7 @@ HttpReply *PluginsResource::getPlugin(const PluginId &pluginId) const
return reply;
}
}
return createErrorReply(HttpReply::NotFound);
return createDeviceErrorReply(HttpReply::NotFound, DeviceManager::DeviceErrorPluginNotFound);
}
HttpReply *PluginsResource::getPluginConfiguration(const PluginId &pluginId) const
@ -137,7 +137,7 @@ HttpReply *PluginsResource::getPluginConfiguration(const PluginId &pluginId) con
DevicePlugin *plugin = 0;
plugin = findPlugin(pluginId);
if (!plugin)
return createErrorReply(HttpReply::NotFound);
return createDeviceErrorReply(HttpReply::NotFound, DeviceManager::DeviceErrorPluginNotFound);
QVariantList configurationParamsList;
foreach (const Param &param, plugin->configuration()) {
@ -155,7 +155,7 @@ HttpReply *PluginsResource::setPluginConfiguration(const PluginId &pluginId, con
DevicePlugin *plugin = 0;
plugin = findPlugin(pluginId);
if (!plugin)
return createErrorReply(HttpReply::NotFound);
return createDeviceErrorReply(HttpReply::NotFound, DeviceManager::DeviceErrorPluginNotFound);
qCDebug(dcRest) << "Set configuration of plugin with id" << pluginId.toString();
@ -169,9 +169,9 @@ HttpReply *PluginsResource::setPluginConfiguration(const PluginId &pluginId, con
DeviceManager::DeviceError result = GuhCore::instance()->setPluginConfig(pluginId, pluginParams);
if (result != DeviceManager::DeviceErrorNoError)
return createErrorReply(HttpReply::BadRequest);
return createDeviceErrorReply(HttpReply::BadRequest, result);
return createSuccessReply();
return createDeviceErrorReply(HttpReply::Ok, result);
}
DevicePlugin *PluginsResource::findPlugin(const PluginId &pluginId) const

View File

@ -45,11 +45,11 @@ HttpReply *RulesResource::proccessRequest(const HttpRequest &request, const QStr
m_ruleId = RuleId(urlTokens.at(3));
if (m_ruleId.isNull()) {
qCWarning(dcRest) << "Could not parse RuleId:" << urlTokens.at(3);
return createErrorReply(HttpReply::BadRequest);
return createRuleErrorReply(HttpReply::BadRequest, RuleEngine::RuleErrorRuleNotFound);
}
if (GuhCore::instance()->findRule(m_ruleId).id().isNull())
return createErrorReply(HttpReply::NotFound);
return createRuleErrorReply(HttpReply::NotFound, RuleEngine::RuleErrorRuleNotFound);
}
@ -89,7 +89,7 @@ HttpReply *RulesResource::proccessGetRequest(const HttpRequest &request, const Q
if (request.url().hasQuery() && request.urlQuery().hasQueryItem("deviceId")) {
deviceId = DeviceId(request.urlQuery().queryItemValue("deviceId"));
if (deviceId.isNull())
createErrorReply(HttpReply::BadRequest);
return createRuleErrorReply(HttpReply::NotFound, RuleEngine::RuleErrorDeviceNotFound);
}
return getRules(deviceId);
}
@ -179,7 +179,7 @@ HttpReply *RulesResource::getRuleDetails(const RuleId &ruleId) const
{
Rule rule = GuhCore::instance()->findRule(ruleId);
if (rule.id().isNull())
return createErrorReply(HttpReply::NotFound);
return createRuleErrorReply(HttpReply::NotFound, RuleEngine::RuleErrorRuleNotFound);
qCDebug(dcRest) << "Get rule details";
HttpReply *reply = createSuccessReply();
@ -194,11 +194,10 @@ HttpReply *RulesResource::removeRule(const RuleId &ruleId) const
RuleEngine::RuleError status = GuhCore::instance()->removeRule(ruleId);
if (status == RuleEngine::RuleErrorNoError) {
HttpReply *reply = createSuccessReply();
return reply;
}
return createErrorReply(HttpReply::InternalServerError);
if (status != RuleEngine::RuleErrorNoError)
return createRuleErrorReply(HttpReply::InternalServerError, status);
return createRuleErrorReply(HttpReply::Ok, status);
}
HttpReply *RulesResource::addRule(const QByteArray &payload) const
@ -214,13 +213,13 @@ HttpReply *RulesResource::addRule(const QByteArray &payload) const
// check rule consistency
RuleEngine::RuleError ruleConsistencyError = JsonTypes::verifyRuleConsistency(params);
if (ruleConsistencyError != RuleEngine::RuleErrorNoError)
return createErrorReply(HttpReply::BadRequest);
return createRuleErrorReply(HttpReply::BadRequest, ruleConsistencyError);
// Check and upack eventDescriptorList
QPair<QList<EventDescriptor>, RuleEngine::RuleError> eventDescriptorVerification = JsonTypes::verifyEventDescriptors(params);
QList<EventDescriptor> eventDescriptorList = eventDescriptorVerification.first;
if (eventDescriptorVerification.second != RuleEngine::RuleErrorNoError)
return createErrorReply(HttpReply::BadRequest);
return createRuleErrorReply(HttpReply::BadRequest, eventDescriptorVerification.second);
// Check and unpack stateEvaluator
qCDebug(dcRest) << "unpacking stateEvaluator:" << params.value("stateEvaluator").toMap();
@ -230,14 +229,14 @@ HttpReply *RulesResource::addRule(const QByteArray &payload) const
QPair<QList<RuleAction>, RuleEngine::RuleError> actionsVerification = JsonTypes::verifyActions(params, eventDescriptorList);
QList<RuleAction> actions = actionsVerification.first;
if (actionsVerification.second != RuleEngine::RuleErrorNoError)
return createErrorReply(HttpReply::BadRequest);
return createRuleErrorReply(HttpReply::BadRequest, actionsVerification.second);
// Check and unpack exitActions
QPair<QList<RuleAction>, RuleEngine::RuleError> exitActionsVerification = JsonTypes::verifyExitActions(params);
QList<RuleAction> exitActions = exitActionsVerification.first;
if (exitActionsVerification.second != RuleEngine::RuleErrorNoError)
return createErrorReply(HttpReply::BadRequest);
return createRuleErrorReply(HttpReply::BadRequest, exitActionsVerification.second);
QString name = params.value("name", QString()).toString();
bool enabled = params.value("enabled", true).toBool();
@ -253,7 +252,7 @@ HttpReply *RulesResource::addRule(const QByteArray &payload) const
return reply;
}
return createErrorReply(HttpReply::BadRequest);
return createRuleErrorReply(HttpReply::BadRequest, status);
}
HttpReply *RulesResource::enableRule(const RuleId &ruleId) const
@ -261,10 +260,11 @@ HttpReply *RulesResource::enableRule(const RuleId &ruleId) const
qCDebug(dcRest) << "Enable rule with id" << ruleId.toString();
RuleEngine::RuleError status = GuhCore::instance()->enableRule(ruleId);
if (status == RuleEngine::RuleErrorNoError)
return createSuccessReply();
return createErrorReply(HttpReply::BadRequest);
if (status != RuleEngine::RuleErrorNoError)
return createRuleErrorReply(HttpReply::InternalServerError, status);
return createRuleErrorReply(HttpReply::Ok, status);
}
HttpReply *RulesResource::disableRule(const RuleId &ruleId) const
@ -272,10 +272,11 @@ HttpReply *RulesResource::disableRule(const RuleId &ruleId) const
qCDebug(dcRest) << "Disable rule with id" << ruleId.toString();
RuleEngine::RuleError status = GuhCore::instance()->disableRule(ruleId);
if (status == RuleEngine::RuleErrorNoError)
return createSuccessReply();
return createErrorReply(HttpReply::BadRequest);
if (status != RuleEngine::RuleErrorNoError)
return createRuleErrorReply(HttpReply::InternalServerError, status);
return createRuleErrorReply(HttpReply::Ok, status);
}
HttpReply *RulesResource::editRule(const RuleId &ruleId, const QByteArray &payload) const
@ -291,13 +292,13 @@ HttpReply *RulesResource::editRule(const RuleId &ruleId, const QByteArray &paylo
// check rule consistency
RuleEngine::RuleError ruleConsistencyError = JsonTypes::verifyRuleConsistency(params);
if (ruleConsistencyError != RuleEngine::RuleErrorNoError)
return createErrorReply(HttpReply::BadRequest);
return createRuleErrorReply(HttpReply::BadRequest, ruleConsistencyError);
// Check and upack eventDescriptorList
QPair<QList<EventDescriptor>, RuleEngine::RuleError> eventDescriptorVerification = JsonTypes::verifyEventDescriptors(params);
QList<EventDescriptor> eventDescriptorList = eventDescriptorVerification.first;
if (eventDescriptorVerification.second != RuleEngine::RuleErrorNoError)
return createErrorReply(HttpReply::BadRequest);
return createRuleErrorReply(HttpReply::BadRequest, eventDescriptorVerification.second);
// Check and unpack stateEvaluator
qCDebug(dcRest) << "unpacking stateEvaluator:" << params.value("stateEvaluator").toMap();
@ -307,13 +308,13 @@ HttpReply *RulesResource::editRule(const RuleId &ruleId, const QByteArray &paylo
QPair<QList<RuleAction>, RuleEngine::RuleError> actionsVerification = JsonTypes::verifyActions(params, eventDescriptorList);
QList<RuleAction> actions = actionsVerification.first;
if (actionsVerification.second != RuleEngine::RuleErrorNoError)
return createErrorReply(HttpReply::BadRequest);
return createRuleErrorReply(HttpReply::BadRequest, actionsVerification.second);
// Check and unpack exitActions
QPair<QList<RuleAction>, RuleEngine::RuleError> exitActionsVerification = JsonTypes::verifyExitActions(params);
QList<RuleAction> exitActions = exitActionsVerification.first;
if (exitActionsVerification.second != RuleEngine::RuleErrorNoError)
return createErrorReply(HttpReply::BadRequest);
return createRuleErrorReply(HttpReply::BadRequest, exitActionsVerification.second);
QString name = params.value("name", QString()).toString();
bool enabled = params.value("enabled", true).toBool();
@ -322,11 +323,11 @@ HttpReply *RulesResource::editRule(const RuleId &ruleId, const QByteArray &paylo
if (status == RuleEngine::RuleErrorNoError) {
qCDebug(dcRest) << "Edit rule successfully finished";
return createSuccessReply();
return createRuleErrorReply(HttpReply::Ok, status);
}
qCWarning(dcRest) << "Edit rule finished with error" << status;
return createErrorReply(HttpReply::BadRequest);
return createRuleErrorReply(HttpReply::BadRequest, status);
}
}

View File

@ -44,7 +44,7 @@ HttpReply *VendorsResource::proccessRequest(const HttpRequest &request, const QS
m_vendorId = VendorId(urlTokens.at(3));
if (m_vendorId.isNull()) {
qCWarning(dcRest) << "Could not parse VendorId:" << urlTokens.at(3);
return createErrorReply(HttpReply::BadRequest);
return createDeviceErrorReply(HttpReply::BadRequest, DeviceManager::DeviceErrorVendorNotFound);
}
}
@ -101,7 +101,7 @@ HttpReply *VendorsResource::getVendor(const VendorId &vendorId) const
return reply;
}
}
return createErrorReply(HttpReply::NotFound);
return createDeviceErrorReply(HttpReply::NotFound, DeviceManager::DeviceErrorVendorNotFound);
}
}

View File

@ -1,4 +1,4 @@
28
29
{
"methods": {
"Actions.ExecuteAction": {