misskey_api/endpoint/admin/emoji/
list_remote.rs1use 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 #[builder(default, setter(strip_option, into))]
11 pub host: Option<String>,
12 #[serde(skip_serializing_if = "Option::is_none")]
14 #[builder(default, setter(strip_option))]
15 pub limit: Option<u8>,
16 #[serde(skip_serializing_if = "Option::is_none")]
17 #[builder(default, setter(strip_option))]
18 pub since_id: Option<Id<Emoji>>,
19 #[serde(skip_serializing_if = "Option::is_none")]
20 #[builder(default, setter(strip_option))]
21 pub until_id: Option<Id<Emoji>>,
22}
23
24impl misskey_core::Request for Request {
25 type Response = Vec<Emoji>;
26 const ENDPOINT: &'static str = "admin/emoji/list-remote";
27}
28
29impl_pagination!(Request, Emoji);
30
31#[cfg(test)]
32mod tests {
33 use super::Request;
34 use crate::test::{ClientExt, TestClient};
35
36 #[tokio::test]
37 async fn request() {
38 let client = TestClient::new();
39 client.admin.test(Request::default()).await;
40 }
41
42 #[tokio::test]
43 async fn request_with_options() {
44 let client = TestClient::new();
45 client
46 .admin
47 .test(Request {
48 host: Some("host".to_string()), limit: Some(100),
50 since_id: None,
51 until_id: None,
52 })
53 .await;
54 }
55
56 #[tokio::test]
57 async fn request_paginate() {
58 let client = TestClient::new();
59 let image_url = client.avatar_url().await;
60 let emoji_id = client.admin.add_emoji_from_url(image_url).await;
61
62 client
63 .admin
64 .test(Request {
65 host: None,
66 limit: None,
67 since_id: Some(emoji_id.clone()),
68 until_id: Some(emoji_id.clone()),
69 })
70 .await;
71 }
72}