misskey_api/endpoint/admin/emoji/
list.rs

1use crate::model::{emoji::Emoji, id::Id};
2
3use serde::Serialize;
4use typed_builder::TypedBuilder;
5
6#[derive(Serialize, Default, Debug, Clone, TypedBuilder)]
7#[serde(rename_all = "camelCase")]
8#[builder(doc)]
9pub struct Request {
10    #[cfg(feature = "12-48-0")]
11    #[cfg_attr(docsrs, doc(cfg(feature = "12-48-0")))]
12    #[serde(skip_serializing_if = "Option::is_none")]
13    #[builder(default, setter(strip_option, into))]
14    pub query: Option<String>,
15    /// 1 .. 100
16    #[serde(skip_serializing_if = "Option::is_none")]
17    #[builder(default, setter(strip_option))]
18    pub limit: Option<u8>,
19    #[serde(skip_serializing_if = "Option::is_none")]
20    #[builder(default, setter(strip_option))]
21    pub since_id: Option<Id<Emoji>>,
22    #[serde(skip_serializing_if = "Option::is_none")]
23    #[builder(default, setter(strip_option))]
24    pub until_id: Option<Id<Emoji>>,
25}
26
27impl misskey_core::Request for Request {
28    type Response = Vec<Emoji>;
29    const ENDPOINT: &'static str = "admin/emoji/list";
30}
31
32impl_pagination!(Request, Emoji);
33
34#[cfg(test)]
35mod tests {
36    use super::Request;
37    use crate::test::{ClientExt, TestClient};
38
39    #[tokio::test]
40    async fn request() {
41        let client = TestClient::new();
42        client.admin.test(Request::default()).await;
43    }
44
45    #[tokio::test]
46    async fn request_with_options() {
47        let client = TestClient::new();
48        client
49            .admin
50            .test(Request {
51                #[cfg(feature = "12-48-0")]
52                query: Some("a".to_string()),
53                limit: Some(100),
54                since_id: None,
55                until_id: None,
56            })
57            .await;
58    }
59
60    #[tokio::test]
61    async fn request_paginate() {
62        let client = TestClient::new();
63        let image_url = client.avatar_url().await;
64        let emoji_id = client.admin.add_emoji_from_url(image_url).await;
65
66        client
67            .admin
68            .test(Request {
69                #[cfg(feature = "12-48-0")]
70                query: None,
71                limit: None,
72                since_id: Some(emoji_id.clone()),
73                until_id: Some(emoji_id.clone()),
74            })
75            .await;
76    }
77}