koios_sdk/
error.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
use thiserror::Error;

/// Error types for the Koios API client
#[derive(Error, Debug)]
pub enum Error {
    /// HTTP client error
    #[error("HTTP client error: {0}")]
    HttpClient(#[from] reqwest::Error),

    /// Error parsing JSON response
    #[error("JSON parsing error: {0}")]
    Json(#[from] serde_json::Error),

    /// Rate limit exceeded
    #[error("Rate limit exceeded. Please wait {0} seconds")]
    RateLimit(u64),

    /// API response error
    #[error("API error: {status} - {message}")]
    Api { status: u16, message: String },

    /// URL parsing error
    #[error("URL parsing error: {0}")]
    Url(#[from] url::ParseError),

    /// Parameter validation error
    #[error("Parameter validation error: {0}")]
    Validation(String),

    /// Query string serialization error
    #[error("Query string error: {0}")]
    QueryString(#[from] serde_qs::Error),

    /// Other errors
    #[error("Other error: {0}")]
    Other(String),

    #[error("JSON-RPC error: {code} - {message}")]
    JsonRpc { code: i64, message: String },
}

/// Result type for Koios API operations
pub type Result<T> = std::result::Result<T, Error>;