blob: 2ecae28e533145a0b3d554861c70305f77a4430a [file]
#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 "absl/status/statusor.h"
#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);
absl::StatusOr<nlohmann::json> CheckAndGetValueAsJson(
const nlohmann::json& root, const nlohmann::json::json_pointer& pointer);
const nlohmann::json::array_t* GetValueAsArray(const nlohmann::json& root,
std::string_view key);
nlohmann::json::array_t* GetValueAsMutableArray(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_