use azure_core::credentials::TokenCredential;
use std::sync::Arc;
#[cfg(feature = "key_auth")]
use azure_core::credentials::Secret;
#[derive(Clone)]
#[non_exhaustive]
pub enum CosmosCredential {
TokenCredential(Arc<dyn TokenCredential>),
#[cfg(feature = "key_auth")]
MasterKey(Secret),
}
impl std::fmt::Debug for CosmosCredential {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match self {
Self::TokenCredential(_) => f.debug_tuple("TokenCredential").field(&"...").finish(),
#[cfg(feature = "key_auth")]
Self::MasterKey(_) => f.debug_tuple("MasterKey").field(&"***").finish(),
}
}
}
impl From<Arc<dyn TokenCredential>> for CosmosCredential {
fn from(credential: Arc<dyn TokenCredential>) -> Self {
Self::TokenCredential(credential)
}
}
#[cfg(feature = "key_auth")]
impl From<Secret> for CosmosCredential {
fn from(key: Secret) -> Self {
Self::MasterKey(key)
}
}