MQTTSuite
Loading...
Searching...
No Matches
json-patch.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <nlohmann/json.hpp>
4#include <string>
5
6namespace nlohmann
7{
8class JsonPatchFormatException : public std::exception
9{
10public:
11 explicit JsonPatchFormatException(std::string msg)
12 : ex_{std::move(msg)} {}
13
14 inline const char *what() const noexcept override final { return ex_.c_str(); }
15
16private:
17 std::string ex_;
18};
19
21{
22public:
23 json_patch() = default;
24 json_patch(json &&patch);
25 json_patch(const json &patch);
26
27 json_patch &add(const json::json_pointer &, json value);
28 json_patch &replace(const json::json_pointer &, json value);
29 json_patch &remove(const json::json_pointer &);
30
31 json &get_json() { return j_; }
32 const json &get_json() const { return j_; }
33
34 operator json() const { return j_; }
35
36private:
37 json j_ = nlohmann::json::array();
38
39 static void validateJsonPatch(json const &patch);
40};
41} // namespace nlohmann
std::vector< std::shared_ptr< schema > > items_
array(json &sch, root_schema *root, const std::vector< nlohmann::json_uri > &uris)
void validate(const json::json_pointer &ptr, const json &instance, json_patch &patch, error_handler &e) const override
void validate(const json::json_pointer &, const json &, json_patch &, error_handler &) const override
void validate(const json::json_pointer &ptr, const json &instance, json_patch &, error_handler &e) const override
void error(const json::json_pointer &ptr, const json &instance, const std::string &message) override
void error(const json::json_pointer &ptr, const json &instance, const std::string &message) override
void propagate(error_handler &e, const std::string &prefix) const
static bool is_validate_complete(const json &, const json::json_pointer &, error_handler &, const logical_combination_error_handler &, size_t, size_t)
std::vector< std::shared_ptr< schema > > subschemata_
bool is_validate_complete(const json &instance, const json::json_pointer &ptr, error_handler &e, const logical_combination_error_handler &, size_t count, size_t)
void validate(const json::json_pointer &ptr, const json &instance, json_patch &patch, error_handler &e) const final
bool is_validate_complete(const json &, const json::json_pointer &, error_handler &e, const logical_combination_error_handler &esub, size_t, size_t current_schema_index)
bool is_validate_complete(const json &, const json::json_pointer &, error_handler &, const logical_combination_error_handler &, size_t count, size_t)
logical_combination(json &sch, root_schema *root, const std::vector< nlohmann::json_uri > &uris)
const json & default_value(const json::json_pointer &ptr, const json &instance, error_handler &e) const override
logical_not(json &sch, root_schema *root, const std::vector< nlohmann::json_uri > &uris)
void validate(const json::json_pointer &ptr, const json &instance, json_patch &patch, error_handler &e) const final
void validate(const json::json_pointer &ptr, const json &instance, json_patch &, error_handler &e) const override
numeric(const json &sch, root_schema *root, std::set< std::string > &kw)
std::pair< bool, json::number_float_t > multipleOf_
void validate(const json::json_pointer &ptr, const json &instance, json_patch &, error_handler &e) const override
std::map< std::string, std::shared_ptr< schema > > dependencies_
void validate(const json::json_pointer &ptr, const json &instance, json_patch &patch, error_handler &e) const override
object(json &sch, root_schema *root, const std::vector< nlohmann::json_uri > &uris)
std::vector< std::pair< std::regex, std::shared_ptr< schema > > > patternProperties_
std::map< std::string, std::shared_ptr< schema > > properties_
void validate(const json::json_pointer &ptr, const json &instance, json_patch &, error_handler &e) const override final
required(const std::vector< std::string > &r, root_schema *root)
const json & default_value(const json::json_pointer &ptr, const json &instance, error_handler &e) const override final
virtual std::shared_ptr< schema > make_for_default_(std::shared_ptr<::schema > &sch, root_schema *root, std::vector< nlohmann::json_uri > &uris, nlohmann::json &default_value) const override
schema_ref(const std::string &id, root_schema *root)
void validate(const json::json_pointer &ptr, const json &instance, json_patch &patch, error_handler &e) const final
void set_target(const std::shared_ptr< schema > &target, bool strong=false)
virtual void validate(const json::json_pointer &ptr, const json &instance, json_patch &patch, error_handler &e) const =0
virtual const json & default_value(const json::json_pointer &, const json &, error_handler &) const
virtual std::shared_ptr< schema > make_for_default_(std::shared_ptr<::schema > &, root_schema *, std::vector< nlohmann::json_uri > &, nlohmann::json &) const
static std::shared_ptr< schema > make(json &schema, root_schema *root, const std::vector< std::string > &key, std::vector< nlohmann::json_uri > uris)
void validate(const json::json_pointer &ptr, const json &instance, json_patch &, error_handler &e) const override
std::tuple< bool, std::string, std::string > content_
std::size_t utf8_length(const std::string &s) const
void error(const json::json_pointer &ptr, const json &instance, const std::string &message) override
std::vector< std::shared_ptr< schema > > type_
virtual std::shared_ptr< schema > make_for_default_(std::shared_ptr<::schema > &, root_schema *, std::vector< nlohmann::json_uri > &, nlohmann::json &default_value) const override
type_schema(json &sch, root_schema *root, const std::vector< nlohmann::json_uri > &uris)
std::vector< std::shared_ptr< schema > > logic_
static std::shared_ptr< schema > make(json &schema, json::value_t type, root_schema *, const std::vector< nlohmann::json_uri > &, std::set< std::string > &)
void validate(const json::json_pointer &ptr, const json &instance, json_patch &patch, error_handler &e) const override final
JsonPatchFormatException(std::string msg)
const char * what() const noexcept override final
json_patch & add(const json::json_pointer &, json value)
json_patch & remove(const json::json_pointer &)
json_patch & replace(const json::json_pointer &, json value)
json_patch(json &&patch)
const json & get_json() const
static void validateJsonPatch(json const &patch)
json_patch(const json &patch)
virtual void error(const json::json_pointer &, const json &, const std::string &)=0
std::unique_ptr< root_schema > root_
json_validator & operator=(json_validator &&)
json_validator(json &&, schema_loader=nullptr, format_checker=nullptr, content_checker=nullptr)
json_validator(schema_loader=nullptr, format_checker=nullptr, content_checker=nullptr)
json_validator(const json &, schema_loader=nullptr, format_checker=nullptr, content_checker=nullptr)
json validate(const json &, error_handler &, const json_uri &initial_uri=json_uri("#")) const
void validate(const json::json_pointer &ptr, const json &instance, json_patch &patch, error_handler &e, const json_uri &initial) const
void insert_unknown_keyword(const json_uri &uri, const std::string &key, json &value)
schema_file & get_or_create_file(const std::string &loc)
void insert(const json_uri &uri, const std::shared_ptr< schema > &s)
root_schema(schema_loader &&loader, format_checker &&format, content_checker &&content)
std::map< std::string, schema_file > files_
std::shared_ptr< schema > get_or_create_ref(const json_uri &uri)
std::shared_ptr< schema > root_
std::string fragment() const
std::string to_string() const
Definition json-uri.cpp:118
std::string location() const
Definition json-uri.cpp:102
const json::json_pointer & pointer() const
json_uri derive(const std::string &uri) const
json_uri append(const std::string &field) const
#define REGEX_NAMESPACE
const std::string logical_combination< anyOf >::key
const std::string logical_combination< allOf >::key
const std::string logical_combination< oneOf >::key
std::function< void(const json_uri &, json &)> schema_loader
std::function< void(const std::string &, const std::string &)> format_checker
std::function< void(const std::string &, const std::string &, const json &)> content_checker
std::string message_
json instance_
json::json_pointer ptr_
std::map< std::string, std::shared_ptr< schema_ref > > unresolved
std::map< std::string, std::shared_ptr< schema > > schemas