krx_rs/
error.rs

1use thiserror::Error;
2
3/// krx-rs 라이브러리의 모든 오류를 포함하는 열거형
4#[derive(Error, Debug)]
5#[non_exhaustive]
6pub enum Error {
7    /// 네트워크 요청 실패
8    #[error("Network request failed: {0}")]
9    Network(#[from] reqwest::Error),
10
11    /// API 응답 파싱 오류
12    #[error("Failed to parse API response: {details}")]
13    Parsing {
14        details: String,
15        #[source]
16        source: serde_json::Error,
17        response_body: String,
18    },
19
20    /// API 서버 오류 응답
21    #[error("API error (status {status_code}): {message}")]
22    ApiError { status_code: u16, message: String },
23
24    /// 잘못된 입력 파라미터
25    #[error("Invalid input: {0}")]
26    InvalidInput(String),
27
28    /// 데이터프레임 변환 오류
29    #[error("DataFrame operation failed")]
30    DataFrame(#[from] polars::prelude::PolarsError),
31
32    /// 인증 오류
33    #[error("Authentication failed: {0}")]
34    Authentication(String),
35
36    /// 속도 제한 초과
37    #[error("Rate limit exceeded, retry after {retry_after} seconds")]
38    RateLimit { retry_after: u64 },
39}
40
41pub type Result<T> = std::result::Result<T, Error>;