use std::env;
use configparser::ini::Ini;
use dirs_next::home_dir;
const INIFILE:&str = ".nexgenomicsrc";
const SECTION:&str = "nexgenomics";
const DEFAULT_URL_STEM:&str = "https://agentstore.nexgenomics.ai";
#[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());
match config.get(SECTION,key) {
Some(a) => Some(a),
None => Some(DEFAULT_URL_STEM.to_string()),
}
}
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(())
}