misskey_api/endpoint/charts/user/
drive.rs

1use crate::model::{
2    chart::{ChartSpan, DriveChart},
3    id::Id,
4    user::User,
5};
6
7use serde::Serialize;
8use typed_builder::TypedBuilder;
9
10#[derive(Serialize, Debug, Clone, TypedBuilder)]
11#[serde(rename_all = "camelCase")]
12#[builder(doc)]
13pub struct Request {
14    pub span: ChartSpan,
15    pub user_id: Id<User>,
16    /// 1 .. 500
17    #[serde(skip_serializing_if = "Option::is_none")]
18    #[builder(default, setter(strip_option))]
19    pub limit: Option<u64>,
20    #[builder(default, setter(strip_option))]
21    pub offset: Option<u64>,
22}
23
24impl misskey_core::Request for Request {
25    type Response = DriveChart;
26    const ENDPOINT: &'static str = "charts/user/drive";
27}
28
29#[cfg(test)]
30mod tests {
31    use super::Request;
32    use crate::test::{ClientExt, TestClient};
33
34    #[tokio::test]
35    async fn request() {
36        use crate::model::chart::ChartSpan;
37
38        let client = TestClient::new();
39        let user = client.user.me().await;
40
41        client
42            .test(Request {
43                span: ChartSpan::Day,
44                user_id: user.id.clone(),
45                limit: None,
46                offset: None,
47            })
48            .await;
49        client
50            .test(Request {
51                span: ChartSpan::Hour,
52                user_id: user.id.clone(),
53                limit: None,
54                offset: None,
55            })
56            .await;
57    }
58
59    #[tokio::test]
60    async fn request_with_limit() {
61        use crate::model::chart::ChartSpan;
62
63        let client = TestClient::new();
64        let user = client.user.me().await;
65
66        client
67            .test(Request {
68                span: ChartSpan::Day,
69                user_id: user.id,
70                limit: Some(500),
71                offset: None,
72            })
73            .await;
74    }
75
76    #[tokio::test]
77    async fn request_with_offset() {
78        use crate::model::chart::ChartSpan;
79
80        let client = TestClient::new();
81        let user = client.user.me().await;
82
83        client
84            .test(Request {
85                span: ChartSpan::Day,
86                user_id: user.id,
87                limit: None,
88                offset: Some(5),
89            })
90            .await;
91    }
92}