use serde::{Deserialize, Serialize};
use std::time::Duration;
use wheel_rs::serde::duration_option_serde;
use wheel_rs::serde::vec_option_serde;
#[derive(Debug, Serialize, Deserialize, Clone)]
#[serde(rename_all = "kebab-case")]
pub struct CorsConfig {
#[serde(default = "enabled_default")]
pub enabled: bool,
#[serde(with = "vec_option_serde", default = "allowed_origins_default")]
pub allowed_origins: Option<Vec<String>>,
#[serde(with = "vec_option_serde", default = "allowed_methods_default")]
pub allowed_methods: Option<Vec<String>>,
#[serde(with = "vec_option_serde", default = "allowed_headers_default")]
pub allowed_headers: Option<Vec<String>>,
#[serde(with = "vec_option_serde", default = "expose_headers_default")]
pub expose_headers: Option<Vec<String>>,
#[serde(with = "duration_option_serde", default = "max_age_default")]
pub max_age: Option<Duration>,
#[serde(default = "allow_credentials_default")]
pub allow_credentials: Option<bool>,
}
fn enabled_default() -> bool {
true
}
fn allowed_origins_default() -> Option<Vec<String>> {
None
}
fn allowed_methods_default() -> Option<Vec<String>> {
None
}
fn allowed_headers_default() -> Option<Vec<String>> {
None
}
fn expose_headers_default() -> Option<Vec<String>> {
None
}
fn max_age_default() -> Option<Duration> {
None
}
fn allow_credentials_default() -> Option<bool> {
None
}