bpi_rs/login/member_center/
sign.rs1use crate::{ BilibiliRequest, BpiClient, BpiError, BpiResponse };
6
7impl BpiClient {
8 pub async fn member_center_update_user_sign(
13 &self,
14 user_sign: &str
15 ) -> Result<BpiResponse<serde_json::Value>, BpiError> {
16 if user_sign.len() > 70 {
18 return Err(BpiError::InvalidParameter {
19 field: "user_sign",
20 message: "签名长度不能超过70个字符",
21 });
22 }
23
24 let result = self
26 .post("https://api.bilibili.com/x/member/web/sign/update")
27 .form(
28 &[
29 ("user_sign", user_sign.to_string()),
30 ("csrf", self.csrf().unwrap_or_default()),
31 ]
32 )
33 .send_bpi("设置个人签名").await?;
34
35 Ok(result)
36 }
37}
38
39#[cfg(test)]
40mod tests {
41 use super::*;
42
43 #[tokio::test]
44 async fn test_update_user_sign() -> Result<(), Box<BpiError>> {
46 let bpi = BpiClient::new();
47
48 let test_sign = "这是一个测试签名 - Powered by Rust";
50 let _result = bpi.member_center_update_user_sign(test_sign).await?;
51
52 Ok(())
53 }
54
55 #[tokio::test]
56 async fn test_sign_length_validation() {
57 let bpi = BpiClient::new();
58
59 let long_sign = "a".repeat(71);
61 let result = bpi.member_center_update_user_sign(&long_sign).await;
62
63 assert!(result.is_err());
64 assert!(result.unwrap_err().to_string().contains("签名长度不能超过70个字符"));
65 }
66}