use std::fs;
use std::io;
use std::io::Write;
use crate::config;
use rustfm_scrobble::{Scrobbler, ScrobblerError};
const SESSION_FILE: &str = "session";
pub fn authenticate(scrobbler: &mut Scrobbler) -> Result<(), ScrobblerError> {
let mut path = config::config_dir().unwrap();
path.push(SESSION_FILE);
if let Ok(session_key) = fs::read_to_string(&path) {
scrobbler.authenticate_with_session_key(&session_key);
} else {
let mut input = String::new();
print!("Username: ");
io::stdout().flush().unwrap();
io::stdin().read_line(&mut input).unwrap();
input.pop();
let username = input.clone();
input.clear();
print!("Password: ");
io::stdout().flush().unwrap();
io::stdin().read_line(&mut input).unwrap();
input.pop();
let password = input;
let session_response = scrobbler.authenticate_with_password(&username, &password)?;
let _ = fs::write(path, session_response.key);
}
Ok(())
}