misskey_api/endpoint/charts/
federation.rs

1use crate::model::chart::{ChartSpan, FederationChart};
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    /// 1 .. 500
12    #[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 instance: FederationChart,
23}
24
25impl misskey_core::Request for Request {
26    type Response = Response;
27    const ENDPOINT: &'static str = "charts/federation";
28}
29
30#[cfg(test)]
31mod tests {
32    use super::Request;
33    use crate::test::{ClientExt, TestClient};
34
35    #[tokio::test]
36    async fn request() {
37        use crate::model::chart::ChartSpan;
38
39        let client = TestClient::new();
40        client
41            .test(Request {
42                span: ChartSpan::Day,
43                limit: None,
44                offset: None,
45            })
46            .await;
47        client
48            .test(Request {
49                span: ChartSpan::Hour,
50                limit: None,
51                offset: None,
52            })
53            .await;
54    }
55
56    #[tokio::test]
57    async fn request_with_limit() {
58        use crate::model::chart::ChartSpan;
59
60        let client = TestClient::new();
61        client
62            .test(Request {
63                span: ChartSpan::Day,
64                limit: Some(500),
65                offset: None,
66            })
67            .await;
68    }
69
70    #[tokio::test]
71    async fn request_with_offset() {
72        use crate::model::chart::ChartSpan;
73
74        let client = TestClient::new();
75        client
76            .test(Request {
77                span: ChartSpan::Day,
78                limit: None,
79                offset: Some(5),
80            })
81            .await;
82    }
83}