misskey_api/endpoint/antennas/
update.rs

1#[cfg(feature = "12-10-0")]
2use crate::model::user_group::UserGroup;
3use crate::model::{
4    antenna::{Antenna, AntennaSource},
5    id::Id,
6    query::Query,
7    user_list::UserList,
8};
9
10use serde::Serialize;
11use typed_builder::TypedBuilder;
12
13#[derive(Serialize, Debug, Clone, TypedBuilder)]
14#[serde(rename_all = "camelCase")]
15#[builder(doc)]
16pub struct Request {
17    pub antenna_id: Id<Antenna>,
18    /// [ 1 .. 100 ] characters
19    #[builder(setter(into))]
20    pub name: String,
21    pub src: AntennaSource,
22    #[builder(default, setter(strip_option))]
23    pub user_list_id: Option<Id<UserList>>,
24    #[cfg(feature = "12-10-0")]
25    #[cfg_attr(docsrs, doc(cfg(feature = "12-10-0")))]
26    #[builder(default, setter(strip_option))]
27    pub user_group_id: Option<Id<UserGroup>>,
28    #[builder(default, setter(into))]
29    pub keywords: Query<String>,
30    #[cfg(feature = "12-19-0")]
31    #[cfg_attr(docsrs, doc(cfg(feature = "12-19-0")))]
32    #[builder(default, setter(into))]
33    pub exclude_keywords: Query<String>,
34    pub users: Vec<String>,
35    pub case_sensitive: bool,
36    pub with_replies: bool,
37    pub with_file: bool,
38    pub notify: bool,
39}
40
41impl misskey_core::Request for Request {
42    type Response = Antenna;
43    const ENDPOINT: &'static str = "antennas/update";
44}
45
46#[cfg(test)]
47mod tests {
48    use super::Request;
49    use crate::test::{ClientExt, TestClient};
50
51    #[tokio::test]
52    async fn request() {
53        use crate::model::{antenna::AntennaSource, query::Query};
54
55        let client = TestClient::new();
56        let antenna = client
57            .user
58            .test(crate::endpoint::antennas::create::Request {
59                name: "test".to_string(),
60                src: AntennaSource::All,
61                user_list_id: None,
62                #[cfg(feature = "12-10-0")]
63                user_group_id: None,
64                keywords: Query::from_vec(vec![vec!["hello".to_string(), "awesome".to_string()]]),
65                #[cfg(feature = "12-19-0")]
66                exclude_keywords: Query::default(),
67                users: Vec::new(),
68                case_sensitive: true,
69                with_replies: false,
70                with_file: true,
71                notify: false,
72            })
73            .await;
74
75        let list = client
76            .test(crate::endpoint::users::lists::create::Request {
77                name: "test".to_string(),
78            })
79            .await;
80
81        client
82            .test(Request {
83                antenna_id: antenna.id,
84                name: "test2".to_string(),
85                src: AntennaSource::List,
86                user_list_id: Some(list.id),
87                #[cfg(feature = "12-10-0")]
88                user_group_id: None,
89                keywords: Query::from_vec(vec![vec!["cool".to_string()], vec!["nice".to_string()]]),
90                #[cfg(feature = "12-19-0")]
91                exclude_keywords: Query::default(),
92                users: Vec::new(),
93                case_sensitive: false,
94                with_replies: true,
95                with_file: false,
96                notify: true,
97            })
98            .await;
99    }
100}