use std::fmt;
#[derive(Clone, Hash, PartialEq, Eq)]
pub enum BmcCredentials {
UsernamePassword {
username: String,
password: Option<String>,
},
Token {
token: String,
},
}
impl BmcCredentials {
#[must_use]
pub const fn username_password(username: String, password: Option<String>) -> Self {
Self::UsernamePassword { username, password }
}
#[must_use]
pub const fn token(token: String) -> Self {
Self::Token { token }
}
#[must_use]
pub const fn new(username: String, password: String) -> Self {
Self::username_password(username, Some(password))
}
}
impl fmt::Debug for BmcCredentials {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::UsernamePassword { username, .. } => f
.debug_struct("BmcCredentials::UsernamePassword")
.field("username", username)
.field("password", &"[REDACTED]")
.finish(),
Self::Token { .. } => f
.debug_struct("BmcCredentials::Token")
.field("token", &"[REDACTED]")
.finish(),
}
}
}
impl fmt::Display for BmcCredentials {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::UsernamePassword { username, .. } => {
write!(
f,
"BmcCredentials::UsernamePassword(username: {username}, password: [REDACTED])"
)
}
Self::Token { .. } => write!(f, "BmcCredentials::Token(token: [REDACTED])"),
}
}
}