1#[cfg(feature = "polars")]
2use polars::error::PolarsError;
3use reqwest::StatusCode;
4use thiserror::Error;
5
6#[derive(Debug, Error)]
8pub enum GieError {
9 #[error("request failed: {0}")]
11 Http(#[from] reqwest::Error),
12 #[error("failed to decode response JSON: {0}")]
14 Json(#[from] serde_json::Error),
15 #[error("HTTP {status}: {body}")]
17 HttpStatus { status: StatusCode, body: String },
18 #[error("GIE API error: {error}: {message}")]
20 Api { error: String, message: String },
21 #[error("invalid date input: {0}")]
23 InvalidDateInput(String),
24 #[error("invalid dataset type input: {0}")]
26 InvalidDatasetTypeInput(String),
27 #[error("invalid page input: {0}")]
29 InvalidPageInput(String),
30 #[error("invalid size input: {0}")]
32 InvalidSizeInput(String),
33 #[error("invalid date range input: {0}")]
35 InvalidDateRangeInput(String),
36 #[cfg(feature = "polars")]
37 #[error("failed to build polars DataFrame: {0}")]
39 Polars(#[from] PolarsError),
40}