pub struct LoginClient<'a> { /* private fields */ }Expand description
登录领域 API 客户端。
Implementations§
Source§impl<'a> LoginClient<'a>
impl<'a> LoginClient<'a>
获取当前会话的导航/登录状态。
Examples found in repository?
examples/module_clients.rs (line 26)
9async fn main() -> BpiResult<()> {
10 let client = client_from_env()?;
11 let video_params = VideoViewParams::from_bvid("BV1xx411c7mD".parse::<Bvid>()?);
12 let bangumi_params = BangumiInfoParams::new(MediaId::new(28_220_978)?);
13
14 if !run_live_example() {
15 println!("module-client 快速示例已编译;设置 BPI_RUN_EXAMPLE=1 后会发起真实网络请求");
16 return Ok(());
17 }
18
19 let video = client.video().view(video_params).await?;
20 println!("video: {}", video.title);
21
22 let bangumi = client.bangumi().info(bangumi_params).await?;
23 println!("bangumi: {}", bangumi.media.title);
24
25 if env::var_os("BPI_COOKIE").is_some() {
26 let nav = client.login().nav().await?;
27 println!("logged in: {}", nav.is_login);
28 }
29
30 Ok(())
31}More examples
examples/login_status.rs (line 19)
15async fn main() -> BpiResult<()> {
16 let client = account::authenticated_client()?;
17 let login = client.login();
18
19 let nav = login.nav().await?;
20 println!(
21 "登录状态: is_login={} mid={:?} uname={}",
22 nav.is_login,
23 nav.mid,
24 nav.uname.as_deref().unwrap_or("<unknown>")
25 );
26
27 let coin = login.coin().await?;
28 println!("硬币余额: {:.2}", coin.money);
29
30 match login.daily_reward().await {
31 Ok(reward) => println!(
32 "每日奖励: login={} watch={} coins={} share={}",
33 reward.login, reward.watch, reward.coins, reward.share
34 ),
35 Err(err) if err.is_risk_control() => {
36 println!("每日奖励: 当前请求被风控拦截,已跳过 ({err})");
37 }
38 Err(err) => return Err(err),
39 }
40
41 let vip = login.vip_info().await?;
42 println!(
43 "VIP: active={} type={} status={}",
44 vip.is_active(),
45 vip.vip_type,
46 vip.vip_status
47 );
48
49 Ok(())
50}Sourcepub async fn stat(&self) -> BpiResult<LoginStats>
pub async fn stat(&self) -> BpiResult<LoginStats>
获取当前已认证用户的关注数、粉丝数和动态数。
Sourcepub async fn coin(&self) -> BpiResult<LoginCoinBalance>
pub async fn coin(&self) -> BpiResult<LoginCoinBalance>
获取当前已认证账号的硬币余额。
Examples found in repository?
examples/login_status.rs (line 27)
15async fn main() -> BpiResult<()> {
16 let client = account::authenticated_client()?;
17 let login = client.login();
18
19 let nav = login.nav().await?;
20 println!(
21 "登录状态: is_login={} mid={:?} uname={}",
22 nav.is_login,
23 nav.mid,
24 nav.uname.as_deref().unwrap_or("<unknown>")
25 );
26
27 let coin = login.coin().await?;
28 println!("硬币余额: {:.2}", coin.money);
29
30 match login.daily_reward().await {
31 Ok(reward) => println!(
32 "每日奖励: login={} watch={} coins={} share={}",
33 reward.login, reward.watch, reward.coins, reward.share
34 ),
35 Err(err) if err.is_risk_control() => {
36 println!("每日奖励: 当前请求被风控拦截,已跳过 ({err})");
37 }
38 Err(err) => return Err(err),
39 }
40
41 let vip = login.vip_info().await?;
42 println!(
43 "VIP: active={} type={} status={}",
44 vip.is_active(),
45 vip.vip_type,
46 vip.vip_status
47 );
48
49 Ok(())
50}Sourcepub async fn today_coin_exp(&self) -> BpiResult<LoginTodayCoinExp>
pub async fn today_coin_exp(&self) -> BpiResult<LoginTodayCoinExp>
获取今天通过投币操作获得的经验值。
Sourcepub async fn daily_reward(&self) -> BpiResult<LoginDailyReward>
pub async fn daily_reward(&self) -> BpiResult<LoginDailyReward>
获取当前已认证账号的每日奖励完成状态。
Examples found in repository?
examples/login_status.rs (line 30)
15async fn main() -> BpiResult<()> {
16 let client = account::authenticated_client()?;
17 let login = client.login();
18
19 let nav = login.nav().await?;
20 println!(
21 "登录状态: is_login={} mid={:?} uname={}",
22 nav.is_login,
23 nav.mid,
24 nav.uname.as_deref().unwrap_or("<unknown>")
25 );
26
27 let coin = login.coin().await?;
28 println!("硬币余额: {:.2}", coin.money);
29
30 match login.daily_reward().await {
31 Ok(reward) => println!(
32 "每日奖励: login={} watch={} coins={} share={}",
33 reward.login, reward.watch, reward.coins, reward.share
34 ),
35 Err(err) if err.is_risk_control() => {
36 println!("每日奖励: 当前请求被风控拦截,已跳过 ({err})");
37 }
38 Err(err) => return Err(err),
39 }
40
41 let vip = login.vip_info().await?;
42 println!(
43 "VIP: active={} type={} status={}",
44 vip.is_active(),
45 vip.vip_type,
46 vip.vip_status
47 );
48
49 Ok(())
50}Sourcepub async fn account_info(&self) -> BpiResult<LoginAccountInfo>
pub async fn account_info(&self) -> BpiResult<LoginAccountInfo>
获取当前已认证账号的个人资料。
Sourcepub async fn vip_info(&self) -> BpiResult<LoginVipInfo>
pub async fn vip_info(&self) -> BpiResult<LoginVipInfo>
获取当前已认证账号的 VIP 状态。
Examples found in repository?
examples/login_status.rs (line 41)
15async fn main() -> BpiResult<()> {
16 let client = account::authenticated_client()?;
17 let login = client.login();
18
19 let nav = login.nav().await?;
20 println!(
21 "登录状态: is_login={} mid={:?} uname={}",
22 nav.is_login,
23 nav.mid,
24 nav.uname.as_deref().unwrap_or("<unknown>")
25 );
26
27 let coin = login.coin().await?;
28 println!("硬币余额: {:.2}", coin.money);
29
30 match login.daily_reward().await {
31 Ok(reward) => println!(
32 "每日奖励: login={} watch={} coins={} share={}",
33 reward.login, reward.watch, reward.coins, reward.share
34 ),
35 Err(err) if err.is_risk_control() => {
36 println!("每日奖励: 当前请求被风控拦截,已跳过 ({err})");
37 }
38 Err(err) => return Err(err),
39 }
40
41 let vip = login.vip_info().await?;
42 println!(
43 "VIP: active={} type={} status={}",
44 vip.is_active(),
45 vip.vip_type,
46 vip.vip_status
47 );
48
49 Ok(())
50}Sourcepub async fn notice(
&self,
params: LoginNoticeParams,
) -> BpiResult<LoginNoticeData>
pub async fn notice( &self, params: LoginNoticeParams, ) -> BpiResult<LoginNoticeData>
获取已认证账号的指定登录通知。
Sourcepub async fn log(&self, params: LoginLogParams) -> BpiResult<LoginLogData>
pub async fn log(&self, params: LoginLogParams) -> BpiResult<LoginLogData>
获取已认证账号的近期登录日志条目。
Sourcepub async fn generate_captcha(&self) -> BpiResult<GenerateCaptcha>
pub async fn generate_captcha(&self) -> BpiResult<GenerateCaptcha>
为登录流程生成 Geetest 验证码挑战。
Sourcepub async fn qr_generate(&self) -> BpiResult<GenerateQrCodeData>
pub async fn qr_generate(&self) -> BpiResult<GenerateQrCodeData>
生成 QR 登录 URL 和临时轮询 key。
Sourcepub async fn qr_poll(
&self,
params: LoginQrPollParams,
) -> BpiResult<CheckQrCodeStatusData>
pub async fn qr_poll( &self, params: LoginQrPollParams, ) -> BpiResult<CheckQrCodeStatusData>
轮询 QR 登录状态。
Source§impl<'a> LoginClient<'a>
impl<'a> LoginClient<'a>
Sourcepub async fn logout(&self, params: LogoutWebParams) -> BpiResult<LogoutData>
pub async fn logout(&self, params: LogoutWebParams) -> BpiResult<LogoutData>
登出当前 Web 会话并返回标准 payload 结果。
Source§impl<'a> LoginClient<'a>
impl<'a> LoginClient<'a>
Sourcepub async fn send_sms_code(
&self,
params: LoginSmsCodeParams,
) -> BpiResult<SMSSendData>
pub async fn send_sms_code( &self, params: LoginSmsCodeParams, ) -> BpiResult<SMSSendData>
发送短信验证码(Web端)
Source§impl<'a> LoginClient<'a>
impl<'a> LoginClient<'a>
Sourcepub async fn update_user_sign(
&self,
params: LoginUserSignParams,
) -> BpiResult<Option<Value>>
pub async fn update_user_sign( &self, params: LoginUserSignParams, ) -> BpiResult<Option<Value>>
更新会员中心用户签名并返回标准 payload 结果。
Trait Implementations§
Source§impl<'a> Clone for LoginClient<'a>
impl<'a> Clone for LoginClient<'a>
Source§fn clone(&self) -> LoginClient<'a>
fn clone(&self) -> LoginClient<'a>
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreimpl<'a> Copy for LoginClient<'a>
Auto Trait Implementations§
impl<'a> !RefUnwindSafe for LoginClient<'a>
impl<'a> !UnwindSafe for LoginClient<'a>
impl<'a> Freeze for LoginClient<'a>
impl<'a> Send for LoginClient<'a>
impl<'a> Sync for LoginClient<'a>
impl<'a> Unpin for LoginClient<'a>
impl<'a> UnsafeUnpin for LoginClient<'a>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more