|
|
| YamlConfig (formats::yaml::Value yaml, formats::yaml::Value config_vars, Mode mode=Mode::kSecure) |
| | YamlConfig = config + config_vars.
|
| |
|
const formats::yaml::Value & | Yaml () const |
| | Get the plain Yaml without substitutions. It may contain raw references.
|
| |
| YamlConfig | operator[] (std::string_view key) const |
| | Access member by key for read.
|
| |
| YamlConfig | operator[] (size_t index) const |
| | Access member by index for read.
|
| |
| std::size_t | GetSize () const |
| | Returns array size or object members count.
|
| |
|
bool | IsMissing () const noexcept |
| | Returns true if *this holds nothing. When IsMissing() returns true any attempt to get the actual value or iterate over *this will throw MemberMissingException.
|
| |
|
bool | IsNull () const noexcept |
| | Returns true if *this holds 'null'.
|
| |
|
bool | IsBool () const noexcept |
| | Returns true if *this is convertible to bool.
|
| |
|
bool | IsInt () const noexcept |
| | Returns true if *this is convertible to int.
|
| |
|
bool | IsInt64 () const noexcept |
| | Returns true if *this is convertible to int64_t.
|
| |
|
bool | IsUInt64 () const noexcept |
| | Returns true if *this is convertible to uint64_t.
|
| |
|
bool | IsDouble () const noexcept |
| | Returns true if *this is convertible to double.
|
| |
|
bool | IsString () const noexcept |
| | Returns true if *this is convertible to std::string.
|
| |
|
bool | IsArray () const noexcept |
| | Returns true if *this is an array (Type::kArray).
|
| |
|
bool | IsObject () const noexcept |
| | Returns true if *this is a map (Type::kObject).
|
| |
| void | CheckNotMissing () const |
| |
| void | CheckArray () const |
| |
| void | CheckArrayOrNull () const |
| |
| void | CheckObjectOrNull () const |
| |
| void | CheckObject () const |
| |
| void | CheckString () const |
| |
| void | CheckObjectOrArrayOrNull () const |
| |
| template<typename T > |
| T | As () const |
| | Returns value of *this converted to T.
|
| |
| template<typename T , typename First , typename... Rest> |
| T | As (First &&default_arg, Rest &&... more_default_args) const |
| | Returns value of *this converted to T or T(args) if this->IsMissing().
|
| |
| template<typename T > |
| T | As (DefaultConstructed) const |
| | Returns value of *this converted to T or T() if this->IsMissing().
|
| |
| bool | HasMember (std::string_view key) const |
| | Returns true if *this holds a key.
|
| |
|
std::string | GetPath () const |
| | Returns full path to this value.
|
| |
| const_iterator | begin () const |
| | Returns an iterator to the beginning of the held array or map.
|
| |
| const_iterator | end () const |
| | Returns an iterator to the end of the held array or map.
|
| |
|
template<> |
| bool | As () const |
| |
|
template<> |
| int64_t | As () const |
| |
|
template<> |
| uint64_t | As () const |
| |
|
template<> |
| double | As () const |
| |
Datatype that represents YAML with substituted variables.
If YAML has value that starts with an $, then such value is treated as a variable from config_vars. For example if config_vars contains variable: 42 and the YAML is following:
Then the result of yaml["some_element"]["some"].As<int>() is 42.
If YAML key ends on '#env' and the mode is YamlConfig::Mode::kEnvAllowed, then the value of the key is searched in environment variables of the process and returned as a value. For example:
If YAML key ends on '#fallback', then the value of the key is used as a fallback for environment and $ variables. For example for the following YAML with YamlConfig::Mode::kEnvAllowed:
The result of yaml["some_element"]["some"].As<int>() is the value of variable from config_vars if it exists; otherwise the value is the contents of the environment variable SOME_ENV_VARIABLE if it exists; otherwise the value if 100500, from the fallback.
Another example:
With YamlConfig::Mode::kEnvAllowed the result of yaml["some_element"]["value"].As<int>() is the value of ENV_NAME environment variable if it exists; otherwise it is 5.
- Warning
- YamlConfig::Mode::kEnvAllowed should be used only on configs that come from trusted environments. Otherwise, an attacker could create a config with
#env and read any of your environment variables, including variables that contain passwords and other sensitive data.
Definition at line 60 of file yaml_config.hpp.