ayun-server 0.23.0

The RUST Framework for Web Rustceans.
Documentation
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 {
    // 5MB
    1024 * 1024 * 5
}

fn default_rate_limit() -> u64 {
    // 60 per second
    60
}

fn default_timeout() -> u64 {
    // 3s
    3
}