use std::time::Duration; /// Name of the cookie that contains session information pub const SESSION_COOKIE_NAME: &str = "X-session-cookie"; /// Energy refresh operations interval pub const ENERGY_REFRESH_INTERVAL: Duration = Duration::from_secs(30); /// Fallback value to use if production cannot be fetched pub const FALLBACK_PRODUCTION_VALUE: i32 = 5000; /// Maximum session duration after inactivity, in seconds pub const MAX_INACTIVITY_DURATION: u64 = 3600; /// Maximum session duration (1 day) pub const MAX_SESSION_DURATION: u64 = 3600 * 24; /// List of routes that do not require authentication pub const ROUTES_WITHOUT_AUTH: [&str; 2] = ["/web_api/server/config", "/web_api/auth/password_auth"]; #[derive(serde::Serialize)] pub struct SizeConstraint { /// Minimal string length min: usize, /// Maximal string length max: usize, } impl SizeConstraint { pub fn new(min: usize, max: usize) -> Self { Self { min, max } } pub fn validate(&self, val: &str) -> bool { let len = val.trim().len(); len >= self.min && len <= self.max } } /// Backend static constraints #[derive(serde::Serialize)] pub struct StaticConstraints { /// Device name constraint pub dev_name_len: SizeConstraint, /// Device description constraint pub dev_description_len: SizeConstraint, } impl Default for StaticConstraints { fn default() -> Self { Self { dev_name_len: SizeConstraint::new(1, 50), dev_description_len: SizeConstraint::new(0, 100), } } }