misskey_api/endpoint/users/
pages.rs1use crate::model::{id::Id, page::Page, user::User};
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 user_id: Id<User>,
11 #[serde(skip_serializing_if = "Option::is_none")]
13 #[builder(default, setter(strip_option))]
14 pub limit: Option<u8>,
15 #[serde(skip_serializing_if = "Option::is_none")]
16 #[builder(default, setter(strip_option))]
17 pub since_id: Option<Id<Page>>,
18 #[serde(skip_serializing_if = "Option::is_none")]
19 #[builder(default, setter(strip_option))]
20 pub until_id: Option<Id<Page>>,
21}
22
23impl misskey_core::Request for Request {
24 type Response = Vec<Page>;
25 const ENDPOINT: &'static str = "users/pages";
26}
27
28impl_pagination!(Request, Page);
29
30#[cfg(test)]
31mod tests {
32 use super::Request;
33 use crate::test::{ClientExt, TestClient};
34
35 #[tokio::test]
36 async fn request_simple() {
37 let client = TestClient::new();
38 let user = client.user.me().await;
39 client
40 .user
41 .test(Request {
42 user_id: user.id,
43 limit: None,
44 since_id: None,
45 until_id: None,
46 })
47 .await;
48 }
49
50 #[tokio::test]
51 async fn request_with_limit() {
52 let client = TestClient::new();
53 let user = client.user.me().await;
54 client
55 .user
56 .test(Request {
57 user_id: user.id,
58 limit: Some(100),
59 since_id: None,
60 until_id: None,
61 })
62 .await;
63 }
64
65 }