bangumi_api/module/user/
service.rs

1use anyhow::Result;
2use bytes::Bytes;
3use reqwest::Method;
4
5use crate::common::model::BangumiClient;
6
7use super::model::{AvatarType, User, UserPublic};
8
9impl BangumiClient {
10    pub async fn get_user(&self, username: &str) -> Result<UserPublic> {
11        let url = format!("{}/v0/users/{username}", self.base_path);
12
13        let request_builder = self.request_builder(Method::GET, &url);
14
15        let res = self.request_send(request_builder).await?.json().await?;
16
17        Ok(res)
18    }
19
20    pub async fn get_user_avatar(&self, username: &str, r#type: AvatarType) -> Result<Bytes> {
21        let url = format!("{}/v0/users/{username}/avatar", self.base_path);
22
23        let mut request_builder = self.request_builder(Method::GET, &url);
24        request_builder = request_builder.query(&[("type", r#type)]);
25
26        let res = self.request_send(request_builder).await?.bytes().await?;
27
28        Ok(res)
29    }
30
31    pub async fn get_me(&self) -> Result<User> {
32        let url = format!("{}/v0/me", self.base_path);
33
34        let request_builder = self.request_builder(Method::GET, &url);
35
36        let res = self.request_send(request_builder).await?.json().await?;
37
38        Ok(res)
39    }
40}