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