misskey_api/endpoint/users/
search_by_username_and_host.rs1use crate::model::user::User;
2
3use serde::Serialize;
4use typed_builder::TypedBuilder;
5
6#[derive(Serialize, Debug, Clone, TypedBuilder)]
7#[serde(rename_all = "camelCase")]
8#[builder(doc)]
9pub struct Request {
10 #[builder(default, setter(strip_option, into))]
11 pub username: Option<String>,
12 #[builder(default, setter(strip_option, into))]
13 pub host: Option<String>,
14 #[serde(skip_serializing_if = "Option::is_none")]
15 #[builder(default, setter(strip_option))]
16 pub detail: Option<bool>,
17 #[serde(skip_serializing_if = "Option::is_none")]
19 #[builder(default, setter(strip_option))]
20 pub limit: Option<u8>,
21 #[serde(skip_serializing_if = "Option::is_none")]
22 #[builder(default, setter(strip_option))]
23 pub offset: Option<u64>,
24}
25
26impl misskey_core::Request for Request {
27 type Response = Vec<User>;
28 const ENDPOINT: &'static str = "users/search-by-username-and-host";
29}
30
31impl_offset_pagination!(Request, User);
32
33#[cfg(test)]
34mod tests {
35 use super::Request;
36 use crate::test::{ClientExt, TestClient};
37
38 #[tokio::test]
39 async fn request() {
40 let client = TestClient::new();
41 client
42 .test(Request {
43 username: Some("test".to_string()),
44 host: None,
45 detail: None,
46 limit: None,
47 offset: None,
48 })
49 .await;
50 }
51
52 #[tokio::test]
53 async fn request_with_host() {
54 let client = TestClient::new();
55 client
56 .test(Request {
57 username: Some("test".to_string()),
58 host: Some("dummy".to_string()), detail: None,
60 limit: None,
61 offset: None,
62 })
63 .await;
64 }
65
66 #[tokio::test]
67 async fn request_with_options() {
68 let client = TestClient::new();
69 client
70 .test(Request {
71 username: Some("admin".to_string()),
72 host: None,
73 detail: Some(false),
74 limit: None,
75 offset: None,
76 })
77 .await;
78 }
79
80 #[tokio::test]
81 async fn request_with_limit() {
82 let client = TestClient::new();
83 client
84 .test(Request {
85 username: Some("admin".to_string()),
86 host: None,
87 detail: None,
88 limit: Some(100),
89 offset: None,
90 })
91 .await;
92 }
93
94 #[tokio::test]
95 async fn request_with_offset() {
96 let client = TestClient::new();
97 client
98 .test(Request {
99 username: Some("admin".to_string()),
100 host: None,
101 detail: None,
102 limit: None,
103 offset: Some(5),
104 })
105 .await;
106 }
107}