misskey_api/endpoint/users/
pages.rs

1use 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    /// 1 .. 100
12    #[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    // TODO: request_paginate
66}