diff --git a/server/rest/pluginsresource.cpp b/server/rest/pluginsresource.cpp index 61abddaf..500b56ae 100644 --- a/server/rest/pluginsresource.cpp +++ b/server/rest/pluginsresource.cpp @@ -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 ¶m, 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 diff --git a/server/rest/rulesresource.cpp b/server/rest/rulesresource.cpp index 12a53f52..864d448b 100644 --- a/server/rest/rulesresource.cpp +++ b/server/rest/rulesresource.cpp @@ -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, RuleEngine::RuleError> eventDescriptorVerification = JsonTypes::verifyEventDescriptors(params); QList 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, RuleEngine::RuleError> actionsVerification = JsonTypes::verifyActions(params, eventDescriptorList); QList actions = actionsVerification.first; if (actionsVerification.second != RuleEngine::RuleErrorNoError) - return createErrorReply(HttpReply::BadRequest); + return createRuleErrorReply(HttpReply::BadRequest, actionsVerification.second); // Check and unpack exitActions QPair, RuleEngine::RuleError> exitActionsVerification = JsonTypes::verifyExitActions(params); QList 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, RuleEngine::RuleError> eventDescriptorVerification = JsonTypes::verifyEventDescriptors(params); QList 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, RuleEngine::RuleError> actionsVerification = JsonTypes::verifyActions(params, eventDescriptorList); QList actions = actionsVerification.first; if (actionsVerification.second != RuleEngine::RuleErrorNoError) - return createErrorReply(HttpReply::BadRequest); + return createRuleErrorReply(HttpReply::BadRequest, actionsVerification.second); // Check and unpack exitActions QPair, RuleEngine::RuleError> exitActionsVerification = JsonTypes::verifyExitActions(params); QList 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); } } diff --git a/server/rest/vendorsresource.cpp b/server/rest/vendorsresource.cpp index c272b77c..ed355b28 100644 --- a/server/rest/vendorsresource.cpp +++ b/server/rest/vendorsresource.cpp @@ -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); } } diff --git a/tests/auto/api.json b/tests/auto/api.json index 95d77cd2..ae63c8cf 100644 --- a/tests/auto/api.json +++ b/tests/auto/api.json @@ -1,4 +1,4 @@ -28 +29 { "methods": { "Actions.ExecuteAction": {