yuque 0.1.3

Yuque Client SDK in Rust
Documentation
use crate::serializer::{UserSerializer, APIResponse};
use crate::yuque::Yuque;
use anyhow::Result;
use std::fmt::Display;

impl Yuque {
    pub async fn get_auth_user(&self) -> Result<UserSerializer> {
        let api = Yuque::build_api("/user", None);
        let resp = self.client.get(api).send().await?;
        if resp.status().is_success() {
            let resp = resp.json::<APIResponse<UserSerializer>>().await?;
            Ok(resp.data)
        } else {
            Err(anyhow::anyhow!("{} {}", resp.status(), resp.text().await?))
        }
    }

    pub async fn get_user<T: Display>(&self, id: T) -> Result<UserSerializer> {
        let endpoint = format!("/users/{}", id);
        let api = Yuque::build_api(&endpoint, None);
        let resp = self.client.get(api).send().await?;
        if resp.status().is_success() {
            let resp = resp.json::<APIResponse<UserSerializer>>().await?;
            Ok(resp.data)
        } else {
            Err(anyhow::anyhow!("{} {}", resp.status(), resp.text().await?))
        }
    }
}

#[cfg(test)]
mod tests {
    use crate::yuque::Yuque;

    #[tokio::test]
    async fn test_get_auth_user() {
        let token = option_env!("YUQUE_TOKEN").unwrap_or_default();
        let yuque = Yuque::new(token).unwrap();
        let user = yuque.get_auth_user().await.unwrap();
        assert_eq!(user.name, "K8sCat");
    }

    #[tokio::test]
    async fn test_get_user() {
        let token = option_env!("YUQUE_TOKEN").unwrap_or_default();
        let yuque = Yuque::new(token).unwrap();
        let user = yuque.get_user(565457).await.unwrap();
        assert_eq!(user.name, "K8sCat");
    }
}