misskey_api/endpoint/admin/
logs.rs

1use crate::model::log::{Log, LogLevel};
2
3use serde::Serialize;
4use typed_builder::TypedBuilder;
5
6#[derive(Serialize, Default, Debug, Clone, TypedBuilder)]
7#[serde(rename_all = "camelCase")]
8#[builder(doc)]
9pub struct Request {
10    /// 1 .. 100
11    #[serde(skip_serializing_if = "Option::is_none")]
12    #[builder(default, setter(strip_option))]
13    pub limit: Option<u8>,
14    #[serde(skip_serializing_if = "Option::is_none")]
15    #[builder(default, setter(strip_option))]
16    pub level: Option<LogLevel>,
17    #[serde(skip_serializing_if = "Option::is_none")]
18    #[builder(default, setter(strip_option, into))]
19    pub domain: Option<String>,
20}
21
22impl misskey_core::Request for Request {
23    type Response = Vec<Log>;
24    const ENDPOINT: &'static str = "admin/logs";
25}
26
27#[cfg(test)]
28mod tests {
29    use super::Request;
30    use crate::test::{ClientExt, TestClient};
31
32    #[tokio::test]
33    async fn request() {
34        let client = TestClient::new();
35        client.admin.test(Request::default()).await;
36    }
37
38    #[tokio::test]
39    async fn request_with_limit() {
40        let client = TestClient::new();
41        client
42            .admin
43            .test(Request {
44                limit: Some(100),
45                level: None,
46                domain: None,
47            })
48            .await;
49    }
50
51    // TODO: test with all `LogLevel`
52    #[tokio::test]
53    async fn request_with_options() {
54        use crate::model::log::LogLevel;
55
56        let client = TestClient::new();
57
58        client
59            .admin
60            .test(Request {
61                limit: None,
62                level: Some(LogLevel::Debug),
63                domain: Some("chart remote -resolve-user".to_string()),
64            })
65            .await;
66    }
67}