bangumi-api 0.1.2

An api implementation for Bangumi website.
Documentation
use anyhow::Result;
use bytes::Bytes;
use reqwest::Method;

use crate::common::model::BangumiClient;

use super::model::{AvatarType, User, UserPublic};

impl BangumiClient {
    pub async fn get_user(&self, username: &str) -> Result<UserPublic> {
        let url = format!("{}/v0/users/{username}", self.base_path);

        let request_builder = self.request_builder(Method::GET, &url);

        let res = self.request_send(request_builder).await?.json().await?;

        Ok(res)
    }

    pub async fn get_user_avatar(&self, username: &str, r#type: AvatarType) -> Result<Bytes> {
        let url = format!("{}/v0/users/{username}/avatar", self.base_path);

        let mut request_builder = self.request_builder(Method::GET, &url);
        request_builder = request_builder.query(&[("type", r#type)]);

        let res = self.request_send(request_builder).await?.bytes().await?;

        Ok(res)
    }

    pub async fn get_me(&self) -> Result<User> {
        let url = format!("{}/v0/me", self.base_path);

        let request_builder = self.request_builder(Method::GET, &url);

        let res = self.request_send(request_builder).await?.json().await?;

        Ok(res)
    }
}