misskey_api/endpoint/clips/
update.rs

1use crate::model::{clip::Clip, id::Id};
2
3use serde::Serialize;
4use typed_builder::TypedBuilder;
5
6#[derive(Serialize, Debug, Clone, TypedBuilder)]
7#[serde(rename_all = "camelCase")]
8#[builder(doc)]
9pub struct Request {
10    pub clip_id: Id<Clip>,
11    /// [ 1 .. 100 ] characters
12    pub name: String,
13    #[cfg(feature = "12-57-0")]
14    #[cfg_attr(docsrs, doc(cfg(feature = "12-57-0")))]
15    #[builder(default)]
16    pub is_public: bool,
17    #[cfg(feature = "12-57-0")]
18    #[cfg_attr(docsrs, doc(cfg(feature = "12-57-0")))]
19    #[builder(default, setter(strip_option))]
20    pub description: Option<String>,
21}
22
23impl misskey_core::Request for Request {
24    type Response = Clip;
25    const ENDPOINT: &'static str = "clips/update";
26}
27
28#[cfg(test)]
29mod tests {
30    use super::Request;
31    use crate::test::{ClientExt, TestClient};
32
33    #[tokio::test]
34    async fn request() {
35        let client = TestClient::new();
36        let clip = client
37            .test(crate::endpoint::clips::create::Request {
38                name: "clip".to_string(),
39                #[cfg(feature = "12-57-0")]
40                is_public: None,
41                #[cfg(feature = "12-57-0")]
42                description: None,
43            })
44            .await;
45
46        client
47            .test(Request {
48                clip_id: clip.id,
49                name: "updated".to_string(),
50                #[cfg(feature = "12-57-0")]
51                is_public: true,
52                #[cfg(feature = "12-57-0")]
53                description: None,
54            })
55            .await;
56    }
57
58    #[tokio::test]
59    async fn request_with_options() {
60        let client = TestClient::new();
61        let clip = client
62            .test(crate::endpoint::clips::create::Request {
63                name: "clip".to_string(),
64                #[cfg(feature = "12-57-0")]
65                is_public: None,
66                #[cfg(feature = "12-57-0")]
67                description: None,
68            })
69            .await;
70
71        client
72            .test(Request {
73                clip_id: clip.id,
74                name: "updated".to_string(),
75                #[cfg(feature = "12-57-0")]
76                is_public: true,
77                #[cfg(feature = "12-57-0")]
78                description: Some("description".to_string()),
79            })
80            .await;
81    }
82}