nexgenomics 0.2.5

The official Rust crate for NexGenomics
Documentation


// src/utils.rs


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 inifile = ".nexgenomicsrc";
    //let section = "nexgenomics";
    let key = "api_auth_token";

    // Check env var first
    if let Ok(env_val) = env::var(envstring) {
        return Some(env_val);
    }

    // now look in an ini file
    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)

    /*
    match config.get(section,key) {
        Some(a) => Some(a),
        None => panic!("No API auth token") // TODO, this is a bad idea.
    }
    */
}



#[allow(dead_code)]
pub fn get_api_url_stem() -> Option<String> {
    let envstring = "API_URL_STEM";
    //let section = "nexgenomics";
    let key = "api_url_stem";

    // Check env var first
    if let Ok(env_val) = env::var(envstring) {
        return Some(env_val);
    }

    // now look in an ini file
    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)

    /*
    match config.get(section,key) {
        Some(a) => Some(a),
        None => panic!("No API url stem")
    }
    */
}


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(())
}