misskey_api/endpoint/charts/
drive.rs1use crate::model::chart::{ChartSpan, DriveChart};
2
3use serde::{Deserialize, 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 span: ChartSpan,
11 #[serde(skip_serializing_if = "Option::is_none")]
13 #[builder(default, setter(strip_option))]
14 pub limit: Option<u64>,
15 #[builder(default, setter(strip_option))]
16 pub offset: Option<u64>,
17}
18
19#[derive(Deserialize, Debug, Clone)]
20#[serde(rename_all = "camelCase")]
21pub struct Response {
22 pub local: DriveChart,
23 pub remote: DriveChart,
24}
25
26impl misskey_core::Request for Request {
27 type Response = Response;
28 const ENDPOINT: &'static str = "charts/drive";
29}
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 use crate::model::chart::ChartSpan;
39
40 let client = TestClient::new();
41 client
42 .test(Request {
43 span: ChartSpan::Day,
44 limit: None,
45 offset: None,
46 })
47 .await;
48 client
49 .test(Request {
50 span: ChartSpan::Hour,
51 limit: None,
52 offset: None,
53 })
54 .await;
55 }
56
57 #[tokio::test]
58 async fn request_with_limit() {
59 use crate::model::chart::ChartSpan;
60
61 let client = TestClient::new();
62 client
63 .test(Request {
64 span: ChartSpan::Day,
65 limit: Some(500),
66 offset: None,
67 })
68 .await;
69 }
70
71 #[tokio::test]
72 async fn request_with_offset() {
73 use crate::model::chart::ChartSpan;
74
75 let client = TestClient::new();
76 client
77 .test(Request {
78 span: ChartSpan::Day,
79 limit: None,
80 offset: Some(5),
81 })
82 .await;
83 }
84}