use thiserror::Error;
#[derive(Debug, Error, PartialEq)]
pub enum VetisError {
#[error("Configuration error: {0}")]
Config(#[from] ConfigError),
#[error("Failed to bind to address: {0}")]
Bind(String),
#[error("Failed to start server: {0}")]
Start(#[from] StartError),
#[error("Failed to stop server: {0}")]
Stop(String),
#[error("Handler error: {0}")]
Handler(String),
#[error("Tls error: {0}")]
Tls(String),
#[error("No instances")]
NoInstances,
#[error("Virtual host error: {0}")]
VirtualHost(#[from] VirtualHostError),
}
#[derive(Debug, Clone, Error, PartialEq)]
pub enum ConfigError {
#[error("Invalid auth config: {0}")]
Auth(String),
#[error("Invalid server config: {0}")]
Server(String),
#[error("Invalid listener config: {0}")]
Listener(String),
#[error("Invalid virtual host config: {0}")]
VirtualHost(String),
#[error("Invalid path config: {0}")]
Path(String),
#[error("Invalid security config: {0}")]
Security(String),
}
#[derive(Debug, Clone, Error, PartialEq)]
pub enum StartError {
#[error("Tls initialization: {0}")]
Tls(String),
}
#[derive(Debug, Clone, Error, PartialEq)]
pub enum VirtualHostError {
#[error("No virtual hosts")]
NoVirtualHosts,
#[error("Handler error: {0}")]
Handler(HandlerError),
#[error("File error: {0}")]
File(FileError),
#[error("Proxy error: {0}")]
Proxy(String),
#[error("Interface error: {0}")]
Interface(String),
#[error("Auth error: {0}")]
Auth(String),
}
#[derive(Debug, Clone, Error, PartialEq)]
pub enum HandlerError {
#[error("Uri error: {0}")]
Uri(String),
#[error("Handler error: {0}")]
Handler(String),
}
#[derive(Debug, Clone, Error, PartialEq)]
pub enum FileError {
#[error("File not found")]
NotFound,
#[error("Invalid metadata")]
InvalidMetadata,
#[error("Invalid range")]
InvalidRange,
}