use std::{collections::HashMap, net::IpAddr, path::PathBuf};
use crate as confique;
use crate::Config;
#[derive(Debug, Config)]
#[allow(dead_code)]
pub struct Conf {
pub site_name: String,
#[config(nested)]
pub http: Http,
#[config(nested)]
pub log: LogConfig,
}
#[derive(Debug, Config)]
#[allow(dead_code)]
pub struct Http {
#[config(env = "PORT")]
pub port: u16,
#[config(nested)]
pub headers: Headers,
#[config(default = "127.0.0.1")]
pub bind: IpAddr,
}
#[derive(Debug, Config)]
#[allow(dead_code)]
pub struct Headers {
#[config(default = "x-username")]
pub username: String,
#[config(default = "x-display-name")]
pub display_name: String,
#[config(default = ["content-type", "content-encoding"])]
pub allowed: Vec<String>,
#[config(default = { "cookie": 1.5, "server": 12.7 })]
pub score: HashMap<String, f32>,
}
#[derive(Debug, Config)]
#[allow(dead_code)]
pub struct LogConfig {
#[config(default = true)]
pub stdout: bool,
pub file: Option<PathBuf>,
}