misskey_api/model/
antenna.rs

1#[cfg(feature = "12-10-0")]
2use crate::model::user_group::UserGroup;
3use crate::model::{id::Id, query::Query, user_list::UserList};
4
5use chrono::{DateTime, Utc};
6use serde::{Deserialize, Serialize};
7use thiserror::Error;
8
9#[derive(Serialize, Deserialize, Debug, Clone)]
10#[serde(rename_all = "camelCase")]
11pub struct Antenna {
12    pub id: Id<Antenna>,
13    pub created_at: DateTime<Utc>,
14    pub name: String,
15    pub case_sensitive: bool,
16    #[cfg(feature = "12-19-0")]
17    #[cfg_attr(docsrs, doc(cfg(feature = "12-19-0")))]
18    pub exclude_keywords: Query<String>,
19    pub keywords: Query<String>,
20    pub src: AntennaSource,
21    #[cfg(feature = "12-10-0")]
22    #[cfg_attr(docsrs, doc(cfg(feature = "12-10-0")))]
23    pub user_group_id: Option<Id<UserGroup>>,
24    pub user_list_id: Option<Id<UserList>>,
25    pub users: Vec<String>,
26    pub notify: bool,
27    pub with_file: bool,
28    pub with_replies: bool,
29}
30
31impl_entity!(Antenna);
32
33#[derive(Serialize, Deserialize, Debug, PartialEq, Eq, Clone, Copy)]
34#[serde(rename_all = "camelCase")]
35pub enum AntennaSource {
36    All,
37    Home,
38    Users,
39    List,
40    #[cfg(feature = "12-10-0")]
41    #[cfg_attr(docsrs, doc(cfg(feature = "12-10-0")))]
42    Group,
43}
44
45#[derive(Debug, Error, Clone)]
46#[error("invalid antenna source")]
47pub struct ParseAntennaSourceError {
48    _priv: (),
49}
50
51impl std::str::FromStr for AntennaSource {
52    type Err = ParseAntennaSourceError;
53
54    fn from_str(s: &str) -> Result<AntennaSource, Self::Err> {
55        match s {
56            "all" | "All" => Ok(AntennaSource::All),
57            "home" | "Home" => Ok(AntennaSource::Home),
58            "users" | "Users" => Ok(AntennaSource::Users),
59            "list" | "List" => Ok(AntennaSource::List),
60            #[cfg(feature = "12-10-0")]
61            "group" | "Group" => Ok(AntennaSource::Group),
62            _ => Err(ParseAntennaSourceError { _priv: () }),
63        }
64    }
65}