use serde::Deserialize;
use serde::Serialize;
#[derive(Clone, Copy, Debug, Deserialize, Serialize, PartialEq, Eq)]
#[serde(rename_all = "lowercase")]
pub enum Visibility {
Direct,
Private,
Unlisted,
Public,
}
impl Default for Visibility {
fn default() -> Self {
Visibility::Public
}
}
impl std::str::FromStr for Visibility {
type Err = crate::error::Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
match s.to_ascii_lowercase().as_str() {
"direct" => Ok(Visibility::Direct),
"private" => Ok(Visibility::Private),
"unlisted" => Ok(Visibility::Unlisted),
"public" => Ok(Visibility::Public),
invalid => Err(crate::error::Error::VisibilityParsingError {
invalid: invalid.to_string(),
}),
}
}
}