use std::{ fs::File, io::Read, path::{Path, PathBuf}, }; use serde::Deserialize; use crate::Result; #[derive(Deserialize, Clone)] pub struct Config { admin_password: String, site_password: Option, files_dir: std::path::PathBuf, database_connection: String, } impl Config { pub fn from_file(path: &str) -> Result { let path = PathBuf::from(path); let mut config = String::new(); File::open(path)?.read_to_string(&mut config)?; let config: Config = toml::from_str(&config)?; Ok(config) } pub fn admin_password(&self) -> &str { &self.admin_password } pub fn site_password(&self) -> Option<&str> { self.site_password.as_deref() } pub fn files_dir(&self) -> &Path { self.files_dir.as_path() } pub fn database_connection(&self) -> &str { &self.database_connection } }