use std::env;
use configparser::ini::Ini;
use dirs_next::home_dir;
use std::path::Path;
use std::panic;
use std::io::BufWriter;
use std::fs::File;
const INIFILE:&str = ".nexgenomicsrc";
const SECTION:&str = "nexgenomics";
#[allow(dead_code)]
pub fn get_api_auth_token() -> Option<String> {
let envstring = "API_AUTH_TOKEN";
let key = "api_auth_token";
if let Ok(env_val) = env::var(envstring) {
return Some(env_val);
}
let fname = home_dir().map(|mut path| {
path.push (INIFILE);
path
});
let mut config = Ini::new();
let _ = config.load(fname.unwrap());
config.get(SECTION,key)
}
#[allow(dead_code)]
pub fn get_api_url_stem() -> Option<String> {
let envstring = "API_URL_STEM";
let key = "api_url_stem";
if let Ok(env_val) = env::var(envstring) {
return Some(env_val);
}
let fname = home_dir().map(|mut path| {
path.push (INIFILE);
path
});
let mut config = Ini::new();
let _ = config.load(fname.unwrap());
config.get(SECTION,key)
}
pub fn set_api_auth_token(token:&String) -> Result<(), Box<dyn std::error::Error>> {
let config_path = home::home_dir()
.map (|hm| hm.join(INIFILE))
.ok_or("No home directory")?;
let fname:&str = config_path.to_str().unwrap().into();
let mut config = Ini::new();
if config_path.exists() {
config.load(fname)?;
}
config.set("nexgenomics","api_auth_token", Some(token.to_string()));
config.write (fname);
Ok(())
}