use crate::core::providers::unified_provider::ProviderError;
#[inline]
pub fn require_config_str<'a>(
config: &'a serde_json::Value,
key: &str,
provider: &'static str,
) -> Result<&'a str, ProviderError> {
config
.get(key)
.and_then(|v| v.as_str())
.ok_or_else(|| ProviderError::configuration(provider, format!("{} is required", key)))
}
#[inline]
pub fn get_config_str<'a>(config: &'a serde_json::Value, key: &str) -> Option<&'a str> {
config.get(key).and_then(|v| v.as_str())
}
#[inline]
pub fn require_config_u64(
config: &serde_json::Value,
key: &str,
provider: &'static str,
) -> Result<u64, ProviderError> {
config
.get(key)
.and_then(|v| v.as_u64())
.ok_or_else(|| ProviderError::configuration(provider, format!("{} is required", key)))
}
#[inline]
pub fn get_config_u64_or(config: &serde_json::Value, key: &str, default: u64) -> u64 {
config.get(key).and_then(|v| v.as_u64()).unwrap_or(default)
}
#[inline]
pub fn require_config_bool(
config: &serde_json::Value,
key: &str,
provider: &'static str,
) -> Result<bool, ProviderError> {
config
.get(key)
.and_then(|v| v.as_bool())
.ok_or_else(|| ProviderError::configuration(provider, format!("{} is required", key)))
}
#[inline]
pub fn get_config_bool_or(config: &serde_json::Value, key: &str, default: bool) -> bool {
config.get(key).and_then(|v| v.as_bool()).unwrap_or(default)
}
#[macro_export]
macro_rules! require_config {
($config:expr, $key:literal, str, $provider:literal) => {
$crate::core::providers::macros::require_config_str($config, $key, $provider)
};
($config:expr, $key:literal, u64, $provider:literal) => {
$crate::core::providers::macros::require_config_u64($config, $key, $provider)
};
($config:expr, $key:literal, bool, $provider:literal) => {
$crate::core::providers::macros::require_config_bool($config, $key, $provider)
};
}