From 743ae22168b1fcdf2e1e54bcadbb1bb3fce3370d Mon Sep 17 00:00:00 2001 From: "Adam T. Carpenter" Date: Mon, 5 Oct 2020 22:05:58 -0400 Subject: started work on schema, models, and repos --- dichroism/src/config.rs | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'dichroism/src/config.rs') diff --git a/dichroism/src/config.rs b/dichroism/src/config.rs index e5b4046..c3dec51 100644 --- a/dichroism/src/config.rs +++ b/dichroism/src/config.rs @@ -1 +1,31 @@ -struct Config {} +use crate::constants::*; +use crate::error::DichroismError; +use crate::result::Result; +use async_std::fs::metadata; +use async_std::path::PathBuf; +use std::env; +use std::net::SocketAddr; + +#[derive(Debug, Clone)] +pub struct Config { + pub db_url: String, + pub img_root: PathBuf, + pub bind_addr: SocketAddr, +} + +impl Config { + pub async fn new_from_env() -> Result { + let img_root = PathBuf::from(env::var(ENV_IMG_ROOT)?); + let meta = metadata(&img_root).await?; + + if !meta.is_dir() || meta.permissions().readonly() { + return Err(Box::new(DichroismError::InvalidImageRoot)); + } + + Ok(Config { + db_url: env::var(ENV_DB_URL)?, + img_root, + bind_addr: env::var(ENV_BIND_ADDR)?.parse()?, + }) + } +} -- cgit v1.2.3