1use thiserror::Error;
2
3pub type Result<T> = std::result::Result<T, WeChatError>;
4
5#[derive(Debug, Error)]
6pub enum WeChatError {
7 #[error("HTTP request error: {0}")]
8 Http(#[from] reqwest::Error),
9
10 #[error("WeChat API error: [{errcode}] {errmsg}")]
11 Api { errcode: i64, errmsg: String },
12
13 #[error("XML parse error: {0}")]
14 Xml(#[from] quick_xml::DeError),
15
16 #[error("JSON parse error: {0}")]
17 Json(#[from] serde_json::Error),
18
19 #[error("Invalid signature")]
20 InvalidSignature,
21
22 #[error("Access token not available")]
23 TokenUnavailable,
24
25 #[error("Invalid AES key")]
26 InvalidAesKey,
27
28 #[error("Decryption failed: {0}")]
29 DecryptionFailed(String),
30
31 #[error("Encryption failed: {0}")]
32 EncryptionFailed(String),
33
34 #[error("Invalid message format")]
35 InvalidMessageFormat,
36
37 #[error("AppID mismatch")]
38 AppIdMismatch,
39
40 #[error("Encoding AES key not configured")]
41 AesKeyNotConfigured,
42}