use std::default::Default;
use std::fs::File;
use std::io::Read;
use std::time::Duration;
extern crate serde;
extern crate serde_json;
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct Config {
pub server: String,
pub port: u16,
pub connect_timeout: Option<u64>,
pub read_timeout: Option<u64>,
pub write_timeout: Option<u64>,
pub use_ssl: Option<bool>,
pub certificate_file: Option<String>,
pub private_key_file: Option<String>,
pub ca_file: Option<String>,
pub verify: Option<bool>,
pub verify_depth: Option<u32>,
}
impl Default for Config {
fn default() -> Config {
Config {
server: "localhost".to_string(),
port: 21950,
connect_timeout: Some(60_000),
read_timeout: Some(60_000),
write_timeout: Some(60_000),
use_ssl: Some(false),
certificate_file: None,
private_key_file: None,
ca_file: None,
verify: None,
verify_depth: None,
}
}
}
impl Config {
fn from_file(file: &str) -> Config {
let mut f = File::open(file).unwrap();
let mut buffer = String::new();
f.read_to_string(&mut buffer).unwrap();
serde_json::from_str(&buffer).unwrap()
}
}
#[cfg(test)]
pub mod test {
use std::default::Default;
use std::time::Duration;
#[test]
fn test_config() {
let c = super::Config {
server: "localhost".to_string(),
port: 2195,
..Default::default()
};
assert_eq!(c.port, 2195);
assert_eq!(c.read_timeout, Some(60_000));
}
}