summaryrefslogtreecommitdiffstats
path: root/redfish-core/include/utils
diff options
context:
space:
mode:
Diffstat (limited to 'redfish-core/include/utils')
-rw-r--r--redfish-core/include/utils/json_utils.hpp279
1 files changed, 5 insertions, 274 deletions
diff --git a/redfish-core/include/utils/json_utils.hpp b/redfish-core/include/utils/json_utils.hpp
index 3263c73..b8195c4 100644
--- a/redfish-core/include/utils/json_utils.hpp
+++ b/redfish-core/include/utils/json_utils.hpp
@@ -28,264 +28,6 @@ namespace json_util
{
/**
- * @brief Defines JSON utils operation status
- */
-enum class Result
-{
- SUCCESS,
- NOT_EXIST,
- WRONG_TYPE,
- NULL_POINTER
-};
-
-/**
- * @brief Describes JSON utils messages requirement
- */
-enum class MessageSetting
-{
- NONE = 0x0, ///< No messages will be added
- MISSING = 0x1, ///< PropertyMissing message will be added
- TYPE_ERROR = 0x2 ///< PropertyValueTypeError message will be added
-};
-
-/**
- * @brief Wrapper function for extracting string from JSON object without
- * throwing exceptions
- *
- * @param[in] fieldName Name of requested field
- * @param[in] json JSON object from which field should be extracted
- * @param[out] output Variable to which extracted will be written in case
- * of success
- *
- * @return Result informing about operation status, output will be
- * written only in case of Result::SUCCESS
- */
-Result getString(const char* fieldName, const nlohmann::json& json,
- const std::string*& output);
-
-/**
- * @brief Wrapper function for extracting object from JSON object without
- * throwing exceptions
- *
- * @param[in] fieldName Name of requested field
- * @param[in] json JSON object from which field should be extracted
- * @param[out] output Variable to which extracted will be written in case
- * of success
- *
- * @return Result informing about operation status, output will be
- * written only in case of Result::SUCCESS
- */
-Result getObject(const char* fieldName, const nlohmann::json& json,
- nlohmann::json* output);
-
-/**
- * @brief Wrapper function for extracting array from JSON object without
- * throwing exceptions
- *
- * @param[in] fieldName Name of requested field
- * @param[in] json JSON object from which field should be extracted
- * @param[out] output Variable to which extracted will be written in case
- * of success
- *
- * @return Result informing about operation status, output will be
- * written only in case of Result::SUCCESS
- */
-Result getArray(const char* fieldName, const nlohmann::json& json,
- nlohmann::json* output);
-
-/**
- * @brief Wrapper function for extracting int from JSON object without
- * throwing exceptions
- *
- * @param[in] fieldName Name of requested field
- * @param[in] json JSON object from which field should be extracted
- * @param[out] output Variable to which extracted will be written in case
- * of success
- *
- * @return Result informing about operation status, output will be
- * written only in case of Result::SUCCESS
- */
-Result getInt(const char* fieldName, const nlohmann::json& json,
- int64_t& output);
-
-/**
- * @brief Wrapper function for extracting uint from JSON object without
- * throwing exceptions
- *
- * @param[in] fieldName Name of requested field
- * @param[in] json JSON object from which field should be extracted
- * @param[out] output Variable to which extracted will be written in case
- * of success
- *
- * @return Result informing about operation status, output will be
- * written only in case of Result::SUCCESS
- */
-Result getUnsigned(const char* fieldName, const nlohmann::json& json,
- uint64_t& output);
-
-/**
- * @brief Wrapper function for extracting bool from JSON object without
- * throwing exceptions
- *
- * @param[in] fieldName Name of requested field
- * @param[in] json JSON object from which field should be extracted
- * @param[out] output Variable to which extracted will be written in case
- * of success
- *
- * @return Result informing about operation status, output will be
- * written only in case of Result::SUCCESS
- */
-Result getBool(const char* fieldName, const nlohmann::json& json, bool& output);
-
-/**
- * @brief Wrapper function for extracting float from JSON object without
- * throwing exceptions (nlohmann stores JSON floats as C++ doubles)
- *
- * @param[in] fieldName Name of requested field
- * @param[in] json JSON object from which field should be extracted
- * @param[out] output Variable to which extracted will be written in case
- * of success
- *
- * @return Result informing about operation status, output will be
- * written only in case of Result::SUCCESS
- */
-Result getDouble(const char* fieldName, const nlohmann::json& json,
- double& output);
-
-/**
- * @brief Wrapper function for extracting string from JSON object without
- * throwing exceptions
- *
- * @param[in] fieldName Name of requested field
- * @param[in] json JSON object from which field should be extracted
- * @param[out] output Variable to which extracted will be written in case
- * of success
- * @param[in] msgCfgMap Map for message addition settings
- * @param[out] msgJson JSON to which error messages will be added
- * @param[in] fieldPath Field path in JSON
- *
- * @return Result informing about operation status, output will be
- * written only in case of Result::SUCCESS
- */
-Result getString(const char* fieldName, const nlohmann::json& json,
- const std::string*& output, uint8_t msgCfgMap,
- nlohmann::json& msgJson, const std::string&& fieldPath);
-
-/**
- * @brief Wrapper function for extracting object from JSON object without
- * throwing exceptions
- *
- * @param[in] fieldName Name of requested field
- * @param[in] json JSON object from which field should be extracted
- * @param[out] output Variable to which extracted will be written in case
- * of success
- * @param[in] msgCfgMap Map for message addition settings
- * @param[out] msgJson JSON to which error messages will be added
- * @param[in] fieldPath Field path in JSON
- *
- * @return Result informing about operation status, output will be
- * written only in case of Result::SUCCESS
- */
-Result getObject(const char* fieldName, const nlohmann::json& json,
- nlohmann::json* output, uint8_t msgCfgMap,
- nlohmann::json& msgJson, const std::string&& fieldPath);
-
-/**
- * @brief Wrapper function for extracting array from JSON object without
- * throwing exceptions
- *
- * @param[in] fieldName Name of requested field
- * @param[in] json JSON object from which field should be extracted
- * @param[out] output Variable to which extracted will be written in case
- * of success
- * @param[in] msgCfgMap Map for message addition settings
- * @param[out] msgJson JSON to which error messages will be added
- * @param[in] fieldPath Field path in JSON
- *
- * @return Result informing about operation status, output will be
- * written only in case of Result::SUCCESS
- */
-Result getArray(const char* fieldName, const nlohmann::json& json,
- nlohmann::json* output, uint8_t msgCfgMap,
- nlohmann::json& msgJson, const std::string&& fieldPath);
-
-/**
- * @brief Wrapper function for extracting int from JSON object without
- * throwing exceptions
- *
- * @param[in] fieldName Name of requested field
- * @param[in] json JSON object from which field should be extracted
- * @param[out] output Variable to which extracted will be written in case
- * of success
- * @param[in] msgCfgMap Map for message addition settings
- * @param[out] msgJson JSON to which error messages will be added
- * @param[in] fieldPath Field path in JSON
- *
- * @return Result informing about operation status, output will be
- * written only in case of Result::SUCCESS
- */
-Result getInt(const char* fieldName, const nlohmann::json& json,
- int64_t& output, uint8_t msgCfgMap, nlohmann::json& msgJson,
- const std::string&& fieldPath);
-
-/**
- * @brief Wrapper function for extracting uint from JSON object without
- * throwing exceptions
- *
- * @param[in] fieldName Name of requested field
- * @param[in] json JSON object from which field should be extracted
- * @param[out] output Variable to which extracted will be written in case
- * of success
- * @param[in] msgCfgMap Map for message addition settings
- * @param[out] msgJson JSON to which error messages will be added
- * @param[in] fieldPath Field path in JSON
- *
- * @return Result informing about operation status, output will be
- * written only in case of Result::SUCCESS
- */
-Result getUnsigned(const char* fieldName, const nlohmann::json& json,
- uint64_t& output, uint8_t msgCfgMap, nlohmann::json& msgJson,
- const std::string&& fieldPath);
-
-/**
- * @brief Wrapper function for extracting bool from JSON object without
- * throwing exceptions
- *
- * @param[in] fieldName Name of requested field
- * @param[in] json JSON object from which field should be extracted
- * @param[out] output Variable to which extracted will be written in case
- * of success
- * @param[in] msgCfgMap Map for message addition settings
- * @param[out] msgJson JSON to which error messages will be added
- * @param[in] fieldPath Field path in JSON
- *
- * @return Result informing about operation status, output will be
- * written only in case of Result::SUCCESS
- */
-Result getBool(const char* fieldName, const nlohmann::json& json, bool& output,
- uint8_t msgCfgMap, nlohmann::json& msgJson,
- const std::string&& fieldPath);
-
-/**
- * @brief Wrapper function for extracting float from JSON object without
- * throwing exceptions (nlohmann stores JSON floats as C++ doubles)
- *
- * @param[in] fieldName Name of requested field
- * @param[in] json JSON object from which field should be extracted
- * @param[out] output Variable to which extracted will be written in case
- * of success
- * @param[in] msgCfgMap Map for message addition settings
- * @param[out] msgJson JSON to which error messages will be added
- * @param[in] fieldPath Field path in JSON
- *
- * @return Result informing about operation status, output will be
- * written only in case of Result::SUCCESS
- */
-Result getDouble(const char* fieldName, const nlohmann::json& json,
- double& output, uint8_t msgCfgMap, nlohmann::json& msgJson,
- const std::string&& fieldPath);
-
-/**
* @brief Processes request to extract JSON from its body. If it fails, adds
* MalformedJSON message to response and ends it.
*
@@ -318,9 +60,7 @@ void readJsonValues(const std::string& key, nlohmann::json& jsonValue,
crow::Response& res, std::bitset<Count>& handled)
{
BMCWEB_LOG_DEBUG << "Unable to find variable for key" << key;
- messages::addMessageToErrorJson(res.jsonValue,
- messages::propertyUnknown(key));
- res.result(boost::beast::http::status::bad_request);
+ messages::propertyUnknown(res, key, key);
}
template <size_t Count, size_t Index, typename ValueType,
@@ -344,11 +84,7 @@ void readJsonValues(const std::string& key, nlohmann::json& jsonValue,
{
BMCWEB_LOG_DEBUG << "Value for key " << key
<< " was incorrect type: " << jsonValue.type_name();
- messages::addMessageToErrorJson(
- res.jsonValue,
- messages::propertyValueTypeError(jsonValue.dump(), key));
- res.result(boost::beast::http::status::bad_request);
-
+ messages::propertyValueTypeError(res, jsonValue.dump(), key, key);
return;
}
@@ -367,9 +103,7 @@ void handleMissing(std::bitset<Count>& handled, crow::Response& res,
{
if (!handled.test(Index) && unpackValue<ValueType>::isRequired::value)
{
- messages::addMessageToErrorJson(res.jsonValue,
- messages::propertyMissing(key));
- res.result(boost::beast::http::status::bad_request);
+ messages::propertyMissing(res, key, key);
}
details::handleMissing<Index + 1, Count>(handled, res, in...);
}
@@ -388,17 +122,14 @@ bool readJson(const crow::Request& req, crow::Response& res, const char* key,
if (!jsonRequest.is_object())
{
BMCWEB_LOG_DEBUG << "Json value is not an object";
- messages::addMessageToErrorJson(res.jsonValue,
- messages::unrecognizedRequestBody());
- res.result(boost::beast::http::status::bad_request);
+ messages::unrecognizedRequestBody(res);
return false;
}
if (jsonRequest.empty())
{
BMCWEB_LOG_DEBUG << "Json value is empty";
- messages::addMessageToErrorJson(res.jsonValue, messages::emptyJSON());
- res.result(boost::beast::http::status::bad_request);
+ messages::emptyJSON(res);
return false;
}
OpenPOWER on IntegriCloud