misskey_api/endpoint/antennas/
update.rs1#[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 #[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}