go_server_rust_sdk/
error.rs1use thiserror::Error;
4
5pub type Result<T> = std::result::Result<T, SdkError>;
7
8#[derive(Error, Debug)]
10pub enum SdkError {
11 #[error("HTTP request failed: {0}")]
13 Http(#[from] reqwest::Error),
14
15 #[error("WebSocket error: {0}")]
17 WebSocket(Box<tokio_tungstenite::tungstenite::Error>),
18
19 #[error("JSON error: {0}")]
21 Json(#[from] serde_json::Error),
22
23 #[error("Crypto error: {0}")]
25 Crypto(String),
26
27 #[error("Task error: {0}")]
29 Task(String),
30
31 #[error("Connection error: {0}")]
33 Connection(String),
34
35 #[error("Operation timed out")]
37 Timeout,
38
39 #[error("Method '{0}' not found")]
41 MethodNotFound(String),
42
43 #[error("Invalid configuration: {0}")]
45 InvalidConfig(String),
46
47 #[error("URL parse error: {0}")]
49 UrlParse(#[from] url::ParseError),
50
51 #[error("Error: {0}")]
53 Generic(String),
54}
55
56impl From<String> for SdkError {
57 fn from(s: String) -> Self {
58 SdkError::Generic(s)
59 }
60}
61
62impl From<&str> for SdkError {
63 fn from(s: &str) -> Self {
64 SdkError::Generic(s.to_string())
65 }
66}
67
68impl From<aes_gcm::Error> for SdkError {
69 fn from(e: aes_gcm::Error) -> Self {
70 SdkError::Crypto(format!("AES-GCM error: {:?}", e))
71 }
72}
73
74impl From<base64::DecodeError> for SdkError {
75 fn from(e: base64::DecodeError) -> Self {
76 SdkError::Crypto(format!("Base64 decode error: {}", e))
77 }
78}
79
80impl From<tokio_tungstenite::tungstenite::Error> for SdkError {
81 fn from(e: tokio_tungstenite::tungstenite::Error) -> Self {
82 SdkError::WebSocket(Box::new(e))
83 }
84}