misskey_api/endpoint/clips/
update.rs1use 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 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}