use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MiddlewareConfig {
pub enable_host_validation: bool,
pub enable_debug_errors: bool,
pub enable_cache: bool,
pub exclusive_login: bool,
}
impl Default for MiddlewareConfig {
fn default() -> Self {
Self {
enable_host_validation: true,
enable_debug_errors: true,
enable_cache: true,
exclusive_login: false,
}
}
}
impl MiddlewareConfig {
pub fn from_env() -> Self {
Self {
enable_host_validation: false,
enable_debug_errors: true, enable_cache: !crate::utils::config::env::debug_from(
std::env::var("DEBUG").ok().as_deref(),
),
exclusive_login: false,
}
}
pub fn production() -> Self {
Self {
enable_host_validation: true,
enable_debug_errors: true,
enable_cache: true,
exclusive_login: false,
}
}
pub fn development() -> Self {
Self {
enable_host_validation: false,
enable_debug_errors: true,
enable_cache: false,
exclusive_login: false,
}
}
pub fn api() -> Self {
Self {
enable_host_validation: true,
enable_debug_errors: true,
enable_cache: true,
exclusive_login: false,
}
}
pub fn custom() -> Self {
Self::default()
}
#[must_use]
pub fn with_debug_errors(mut self, enable: bool) -> Self {
self.enable_debug_errors = enable;
self
}
#[must_use]
pub fn with_cache(mut self, enable: bool) -> Self {
self.enable_cache = enable;
self
}
}