misskey_api/model/
antenna.rs1#[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}