1use super::error::BpiError;
2
3impl From<reqwest::Error> for BpiError {
5 fn from(err: reqwest::Error) -> Self {
6 let message = if err.is_timeout() {
7 "请求超时".to_string()
8 } else if err.is_connect() {
9 "连接失败".to_string()
10 } else if err.is_request() {
11 format!("请求错误: {}", err)
12 } else if err.is_decode() {
13 format!("响应解析错误: {}", err)
14 } else {
15 err.to_string()
16 };
17
18 BpiError::Network { message }
19 }
20}
21
22impl<T> From<crate::response::BpiResponse<T>> for BpiError {
24 fn from(resp: crate::response::BpiResponse<T>) -> Self {
25 BpiError::from_api_response(resp)
26 }
27}
28
29impl From<serde_json::Error> for BpiError {
31 fn from(err: serde_json::Error) -> Self {
32 BpiError::Parse {
33 message: err.to_string(),
34 }
35 }
36}