use config::{ConfigError, Config}; use std::collections::HashMap; #[derive(Debug, Deserialize)] pub struct EmailCredentials { pub smtp_server: String, pub smtp_name: String, pub smtp_username: String, pub smtp_password: String, } #[derive(Debug, Serialize, Deserialize)] pub struct EmailStrings { pub subject: String, pub message: String, pub attachment: String, } #[derive(Debug, Serialize, Deserialize)] pub struct FormStrings { pub title: String, pub h1: String, pub h2: String, pub name: String, pub email: String, pub num_guests: String, pub cant_come: String, pub one_guest: String, pub two_guest: String, pub three_guest: String, pub four_guest: String, pub five_guest: String, pub submit: String, pub additional_info: String, pub name_error: String, pub email_error: String, pub guest_error: String, } #[derive(Debug, Clone, Serialize, Deserialize)] pub struct MessageStrings { pub title: String, pub h1: String, pub message: String, } #[derive(Debug, Serialize, Deserialize)] pub struct LanguageStrings { pub attending_email: EmailStrings, pub not_attending_email: EmailStrings, pub form: FormStrings, pub thanks: MessageStrings, pub spam:MessageStrings, pub email_issue:MessageStrings, } #[derive(Debug, Deserialize)] pub struct Settings { pub email_credentials: EmailCredentials, pub spam_wait: u64, pub tld_mapping: HashMap, pub default_lang: String, pub languages: HashMap, } impl Settings { pub fn new() -> Result { let mut settings = Config::default(); settings // File::with_name(..) is shorthand for File::from(Path::new(..)) .merge(config::File::with_name("config.hjson")).unwrap(); settings.try_into() } }