Skip to main content

BpiError

Enum BpiError 

Source
pub enum BpiError {
    Network {
        message: String,
    },
    Transport {
        source: Error,
    },
    Http {
        status: u16,
    },
    HttpStatus {
        status: u16,
    },
    Parse {
        message: String,
    },
    Decode {
        source: Error,
    },
    Api {
        code: i32,
        message: String,
        category: ErrorCategory,
    },
    Authentication {
        message: String,
    },
    Auth {
        message: String,
    },
    InvalidParameter {
        field: &'static str,
        message: &'static str,
    },
    MissingData,
    UnsupportedResponse {
        message: String,
    },
}

Variants§

§

Network

网络请求失败

Fields

§message: String
§

Transport

transport 层请求失败。

Fields

§source: Error
§

Http

HTTP状态码错误

Fields

§status: u16
§

HttpStatus

HTTP 状态错误。

Fields

§status: u16
§

Parse

JSON解析失败

Fields

§message: String
§

Decode

响应解码失败。

Fields

§source: Error
§

Api

API返回的业务错误

Fields

§code: i32
§message: String
§category: ErrorCategory
§

Authentication

验证错误

Fields

§message: String
§

Auth

认证或授权错误。

Fields

§message: String
§

InvalidParameter

§参数错误

Fields

§field: &'static str
§message: &'static str
§

MissingData

API 响应成功,但未包含必需的 payload 数据。

§

UnsupportedResponse

当前解析器不支持该响应格式。

Fields

§message: String

Implementations§

Source§

impl BpiError

Source

pub fn missing_csrf() -> Self

Source

pub fn missing_data() -> Self

Source

pub fn auth_required() -> Self

Source§

impl BpiError

生成Error的From实现

Source

pub fn from_code(code: i32) -> Self

根据API错误码创建BpiError

Source

pub fn from_code_message(code: i32, message: String) -> Self

Source

pub fn from_api_response<T>(resp: ApiEnvelope<T>) -> Self

从API响应创建BpiError

Source§

impl BpiError

获取错误属性

Source

pub fn code(&self) -> Option<i32>

获取错误码

Source

pub fn http_status(&self) -> Option<u16>

获取 HTTP 状态码

Source

pub fn category(&self) -> ErrorCategory

获取错误分类

Source§

impl BpiError

错误创建函数

Source

pub fn network(message: impl Into<String>) -> Self

创建网络错误

Source

pub fn http(status: u16) -> Self

创建HTTP错误

Source

pub fn parse(message: impl Into<String>) -> Self

创建解析错误

Source

pub fn invalid_parameter(field: &'static str, message: &'static str) -> Self

创建参数错误

Examples found in repository?
examples/live_room_info.rs (line 15)
12fn room_id() -> BpiResult<i64> {
13    match std::env::var("BILI_ROOM_ID") {
14        Ok(value) => value.parse().map_err(|_| {
15            BpiError::invalid_parameter("room_id", "room id must be a signed integer")
16        }),
17        Err(_) => Ok(DEFAULT_ROOM_ID),
18    }
19}
Source

pub fn auth(message: impl Into<String>) -> Self

Source

pub fn unsupported_response(message: impl Into<String>) -> Self

创建不支持响应错误。

Source§

impl BpiError

错误判断

Source

pub fn requires_login(&self) -> bool

判断是否需要用户登录

Source

pub fn is_permission_error(&self) -> bool

判断是否为权限问题

Source

pub fn requires_vip(&self) -> bool

判断是否需要VIP权限

Source

pub fn is_risk_control(&self) -> bool

判断是否为风控拦截

Examples found in repository?
examples/login_status.rs (line 35)
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}
Source

pub fn is_business_error(&self) -> bool

判断是否为业务逻辑错误

Source

pub fn semantic_error(&self) -> Option<&'static str>

获取可写入契约的稳定语义错误标签

Trait Implementations§

Source§

impl Debug for BpiError

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Display for BpiError

Source§

fn fmt(&self, __formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Error for BpiError

Source§

fn source(&self) -> Option<&(dyn Error + 'static)>

Returns the lower-level source of this error, if any. Read more
1.0.0 · Source§

fn description(&self) -> &str

👎Deprecated since 1.42.0:

use the Display impl or to_string()

1.0.0 · Source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0:

replaced by Error::source, which can support downcasting

Source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type-based access to context intended for error reports. Read more
Source§

impl<T> From<ApiEnvelope<T>> for BpiError

Source§

fn from(resp: ApiEnvelope<T>) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for BpiError

Source§

fn from(err: Error) -> Self

Converts to this type from the input type.
Source§

impl From<Error> for BpiError

Source§

fn from(err: Error) -> Self

Converts to this type from the input type.
Source§

impl Serialize for BpiError

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Sized + Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> Serialize for T
where T: Serialize + ?Sized,

Source§

fn erased_serialize(&self, serializer: &mut dyn Serializer) -> Result<(), Error>

Source§

fn do_erased_serialize( &self, serializer: &mut dyn Serializer, ) -> Result<(), ErrorImpl>

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T> ToStringFallible for T
where T: Display,

Source§

fn try_to_string(&self) -> Result<String, TryReserveError>

ToString::to_string, but without panic on OOM.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more