use crate::{ BilibiliRequest, BpiClient, BpiError, BpiResponse };
use serde::{ Deserialize, Serialize };
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UserStat {
pub following: u64,
pub follower: u64,
pub dynamic_count: u64,
}
impl BpiClient {
pub async fn login_info_user_stat(&self) -> Result<BpiResponse<UserStat>, BpiError> {
let result = self
.get("https://api.bilibili.com/x/web-interface/nav/stat")
.send_bpi("获取登录用户状态").await?;
Ok(result)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[tokio::test]
async fn test_get_user_stat() {
let bpi = BpiClient::new();
match bpi.login_info_user_stat().await {
Ok(resp) => {
if resp.code == 0 {
let data = resp.data.unwrap();
tracing::info!(
"关注数: {}, 粉丝数: {}, 动态数: {}",
data.following,
data.follower,
data.dynamic_count
);
} else {
tracing::info!("请求失败: code={}, message={}", resp.code, resp.message);
}
}
Err(err) => {
panic!("请求出错: {}", err);
}
}
}
}