misskey_api/endpoint/users/
show.rs

1use crate::model::{id::Id, user::User};
2
3use serde::Serialize;
4
5#[derive(Serialize, Debug, Clone)]
6#[serde(untagged)]
7pub enum Request {
8    #[serde(rename_all = "camelCase")]
9    WithUserId { user_id: Id<User> },
10    #[serde(rename_all = "camelCase")]
11    WithUsername {
12        username: String,
13        host: Option<String>,
14    },
15}
16
17impl misskey_core::Request for Request {
18    type Response = User;
19    const ENDPOINT: &'static str = "users/show";
20}
21
22#[derive(Serialize, Debug, Clone)]
23#[serde(rename_all = "camelCase")]
24pub struct RequestWithUserIds {
25    pub user_ids: Vec<Id<User>>,
26}
27
28impl misskey_core::Request for RequestWithUserIds {
29    type Response = Vec<User>;
30    const ENDPOINT: &'static str = "users/show";
31}
32
33#[cfg(test)]
34mod tests {
35    use super::{Request, RequestWithUserIds};
36    use crate::test::{ClientExt, TestClient};
37
38    #[tokio::test]
39    async fn request_with_user_id() {
40        let client = TestClient::new();
41        let user = client.me().await;
42
43        client.test(Request::WithUserId { user_id: user.id }).await;
44    }
45
46    #[tokio::test]
47    async fn request_with_username() {
48        let client = TestClient::new();
49        let user = client.me().await;
50
51        client
52            .test(Request::WithUsername {
53                username: user.username,
54                host: None,
55            })
56            .await;
57    }
58
59    // TODO: request_with_username_and_host
60
61    #[tokio::test]
62    async fn request_with_user_ids() {
63        let client = TestClient::new();
64        let user = client.user.me().await;
65        let admin = client.admin.me().await;
66
67        client
68            .test(RequestWithUserIds {
69                user_ids: vec![user.id, admin.id],
70            })
71            .await;
72    }
73}