misskey_api/endpoint/charts/user/
drive.rs1use 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 #[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}