78 lines
1.8 KiB
Rust
78 lines
1.8 KiB
Rust
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<String, String>,
|
|
pub default_lang: String,
|
|
pub languages: HashMap<String, LanguageStrings>,
|
|
}
|
|
|
|
impl Settings {
|
|
pub fn new() -> Result<Self,ConfigError> {
|
|
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()
|
|
}
|
|
|
|
}
|