mastodon_async_entities/
visibility.rs

1use serde::Deserialize;
2use serde::Serialize;
3
4/// The visibility of a status.
5#[derive(Clone, Copy, Debug, Deserialize, Serialize, PartialEq, Eq)]
6#[serde(rename_all = "lowercase")]
7pub enum Visibility {
8    /// A Direct message to a user
9    Direct,
10    /// Only available to followers
11    Private,
12    /// Not shown in public timelines
13    Unlisted,
14    /// Posted to public timelines
15    Public,
16}
17
18impl Default for Visibility {
19    fn default() -> Self {
20        Visibility::Public
21    }
22}
23
24impl std::str::FromStr for Visibility {
25    type Err = crate::error::Error;
26
27    fn from_str(s: &str) -> Result<Self, Self::Err> {
28        match s.to_ascii_lowercase().as_str() {
29            "direct" => Ok(Visibility::Direct),
30            "private" => Ok(Visibility::Private),
31            "unlisted" => Ok(Visibility::Unlisted),
32            "public" => Ok(Visibility::Public),
33            invalid => Err(crate::error::Error::VisibilityParsingError {
34                invalid: invalid.to_string(),
35            }),
36        }
37    }
38}