bpi_rs/login/login_info/
stat.rs1use crate::{ BilibiliRequest, BpiClient, BpiError, BpiResponse };
6use serde::{ Deserialize, Serialize };
7
8#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct UserStat {
11 pub following: u64,
13 pub follower: u64,
15 pub dynamic_count: u64,
17}
18
19impl BpiClient {
20 pub async fn login_info_user_stat(&self) -> Result<BpiResponse<UserStat>, BpiError> {
22 let result = self
23 .get("https://api.bilibili.com/x/web-interface/nav/stat")
24 .send_bpi("获取登录用户状态").await?;
25 Ok(result)
26 }
27}
28
29#[cfg(test)]
30mod tests {
31 use super::*;
32
33 #[tokio::test]
34 async fn test_get_user_stat() {
35 let bpi = BpiClient::new();
36
37 match bpi.login_info_user_stat().await {
38 Ok(resp) => {
39 if resp.code == 0 {
40 let data = resp.data.unwrap();
41
42 tracing::info!(
43 "关注数: {}, 粉丝数: {}, 动态数: {}",
44 data.following,
45 data.follower,
46 data.dynamic_count
47 );
48 } else {
49 tracing::info!("请求失败: code={}, message={}", resp.code, resp.message);
50 }
51 }
52 Err(err) => {
53 panic!("请求出错: {}", err);
54 }
55 }
56 }
57}