blob: 20159120a17744954b1dc9790a135a5218eb8d20 [file] [log] [blame]
#ifndef THIRD_PARTY_MILOTIC_EXTERNAL_CC_AUTHZ_JSON_UTILS_H_
#define THIRD_PARTY_MILOTIC_EXTERNAL_CC_AUTHZ_JSON_UTILS_H_
#include <cstddef>
#include <cstdint>
#include <optional>
#include <string>
#include <string_view>
#include "nlohmann/json.hpp"
namespace milotic::authz {
const std::string* GetValueAsStringFromArray(
const nlohmann::json::array_t& array, std::size_t index);
const std::string* GetValueAsString(const nlohmann::json& root,
std::string_view key);
const std::string* GetValueAsString(
const nlohmann::json& root, const nlohmann::json::json_pointer& pointer);
const nlohmann::json* GetValueAsJson(const nlohmann::json& root,
std::string_view key);
const nlohmann::json::array_t* GetValueAsArray(const nlohmann::json& root,
std::string_view key);
const double* GetValueAsDouble(const nlohmann::json& root,
std::string_view key);
const int64_t* GetValueAsInt(const nlohmann::json& root, std::string_view key);
const uint64_t* GetValueAsUint(const nlohmann::json& root,
std::string_view key);
const bool* GetValueAsBool(const nlohmann::json& root, std::string_view key);
std::optional<uint64_t> GetValueAsUintFromStringOrInteger(
const nlohmann::json& root, std::string_view key);
std::optional<double> GetValueAsDoubleFromFloatOrInteger(
const nlohmann::json& root, std::string_view key);
} // namespace milotic::authz
#endif // THIRD_PARTY_MILOTIC_EXTERNAL_CC_AUTHZ_JSON_UTILS_H_