| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef SRC_LIB_JSON_PARSER_RAPIDJSON_VALIDATION_H_ |
| #define SRC_LIB_JSON_PARSER_RAPIDJSON_VALIDATION_H_ |
| |
| #include <lib/fitx/result.h> |
| |
| #include <memory> |
| #include <sstream> |
| #include <string_view> |
| |
| #include <rapidjson/document.h> |
| #include <rapidjson/schema.h> |
| |
| namespace json_parser { |
| |
| // Error for `InitSchema` function. |
| struct InitSchemaError { |
| // Offset in schema json where error occured. |
| size_t offset; |
| |
| // Call `rapidjson::GetParseError_En` on error code to get string representation. |
| rapidjson::ParseErrorCode code; |
| |
| std::string ToString() const; |
| }; |
| |
| // Build a SchemaDocument from a json encoded string. |
| fitx::result<InitSchemaError, rapidjson::SchemaDocument> InitSchema(std::string_view json); |
| |
| // Validate that the given json value match the given schema. |
| // Returns validation error on error. |
| fitx::result<std::string> ValidateSchema(const rapidjson::Value& value, |
| const rapidjson::SchemaDocument& schema, |
| std::string_view value_name = ""); |
| |
| } // namespace json_parser |
| |
| #endif // SRC_LIB_JSON_PARSER_RAPIDJSON_VALIDATION_H_ |