use ayun_config::default;
use serde::Deserialize;
#[derive(Debug, Deserialize)]
pub struct Middleware {
#[serde(default = "default_body_limit")]
pub body_limit: usize,
#[serde(default)]
pub cors: Cors,
#[serde(default)]
pub rate_limit: RateLimit,
#[serde(default = "default_timeout")]
pub timeout: u64,
}
#[derive(Debug, Default, Deserialize)]
pub struct Cors {
pub allow_credentials: bool,
pub allow_headers: Vec<String>,
pub allow_methods: Vec<String>,
pub allow_origins: Vec<String>,
pub allow_private_network: bool,
pub expose_headers: Vec<String>,
pub max_age: u64,
pub vary: Vec<String>,
}
#[derive(Debug, Default, Deserialize)]
pub struct RateLimit {
#[serde(default = "default_buffer")]
pub buffer: usize,
#[serde(default = "default_rate_limit")]
pub period: u64,
}
impl Default for Middleware {
fn default() -> Self {
default::<Self>().expect("Failed to get default value")
}
}
fn default_buffer() -> usize {
1024
}
fn default_body_limit() -> usize {
1024 * 1024 * 5
}
fn default_rate_limit() -> u64 {
60
}
fn default_timeout() -> u64 {
3
}