Skip to main content

mutiny_rs/http/
user.rs

1use crate::builders::edit_user::EditUserBuilder;
2use crate::http::routing::Route;
3use crate::http::{HttpClient, HttpError};
4use crate::model::channel::Channel;
5use crate::model::user::{DataEditUser, User};
6
7impl HttpClient {
8    pub async fn fetch_self(&self) -> Result<User, HttpError> {
9        let route = Route::FetchMe;
10        self.get::<User>(route).await
11    }
12    pub async fn fetch_user(&self, id: &str) -> Result<User, HttpError> {
13        let route = Route::FetchUser { user_id: &id };
14        self.get::<User>(route).await
15    }
16    pub fn edit_user<'a>(&'a self, user_id: impl Into<String>) -> EditUserBuilder<'a> {
17        EditUserBuilder {
18            http: self,
19            target_id: user_id.into(),
20            data: DataEditUser::new(),
21        }
22    }
23    pub async fn request_edit_user(&self, user_id: &str, data: DataEditUser) -> Result<User, HttpError> {
24        let route = Route::EditUser { user_id };
25        self.execute::<DataEditUser, User>(route, data).await
26    }
27    pub async fn fetch_dms(&self) -> Result<Vec<Channel>, HttpError> {
28        let route = Route::FetchMe;
29        self.get(route).await
30    }
31}