use thiserror::Error;
#[derive(Debug, Error)]
pub enum Error {
#[error("network/transport error: {0}")]
Network(#[from] reqwest::Error),
#[error("HTTP {status} from ALAT gateway: {body}")]
Http {
status: reqwest::StatusCode,
body: String,
},
#[error("failed to decode ALAT response: {message}\n--- body ---\n{body}")]
Decode {
message: String,
body: String,
},
#[error("ALAT API rejected the request: {message}{}", .code.as_deref().map(|c| format!(" (code: {c})")).unwrap_or_default())]
Api {
message: String,
code: Option<String>,
errors: Vec<String>,
},
#[error("configuration error: {0}")]
Configuration(String),
#[error("validation error: {0}")]
Validation(String),
}
pub type Result<T> = std::result::Result<T, Error>;