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}