use thiserror::Error;
#[derive(Error, Debug)]
pub enum Error {
#[error("Configuration error: {message}")]
Config { message: String },
#[error("Invalid URL '{url}': {reason}")]
InvalidUrl { url: String, reason: String },
#[error("Failed to read file '{path}': {source}")]
FileRead {
path: String,
#[source]
source: std::io::Error,
},
#[error("Failed to download from '{url}': {reason}")]
Download { url: String, reason: String },
#[error("HTTP error: {0}")]
Http(#[from] reqwest::Error),
#[error("S3 operation failed: {operation} - {reason}")]
S3Operation { operation: String, reason: String },
#[error("Could not determine content type for '{filename}'")]
UnknownContentType { filename: String },
#[error("Invalid file path: {reason}")]
InvalidPath { reason: String },
}
pub type Result<T> = std::result::Result<T, Error>;