ff9a46c05c
Added a Token Credential Manager - Closes #4 Added TUI Menu - Closes #2
38 lines
1.2 KiB
Rust
38 lines
1.2 KiB
Rust
use dialoguer::{Input, theme::ColorfulTheme};
|
|
use keyring::Entry;
|
|
|
|
pub fn get_token<'a>(service: &str, username: &str) -> String {
|
|
let entry = Entry::new(service, username).expect("Failed to get keyring entry");
|
|
match entry.get_password() {
|
|
Ok(token) => token,
|
|
Err(_) => {
|
|
let token: String = Input::with_theme(&ColorfulTheme::default())
|
|
.with_prompt("Enter your bot token")
|
|
.interact_text()
|
|
.unwrap();
|
|
match entry.set_password(&token) {
|
|
Ok(_) => {}
|
|
Err(e) => {
|
|
println!("Failed to set token: {}", e);
|
|
std::process::abort()
|
|
}
|
|
};
|
|
token
|
|
}
|
|
}
|
|
}
|
|
|
|
pub fn change_token(service: &str, username: &str) {
|
|
let entry = Entry::new(service, username).expect("Failed to get keyring entry");
|
|
let new_token: String = Input::with_theme(&ColorfulTheme::default())
|
|
.with_prompt("New Token")
|
|
.interact_text()
|
|
.unwrap();
|
|
let _ = entry.set_password(&new_token);
|
|
}
|
|
|
|
pub fn remove_token(service: &str, username: &str) {
|
|
let entry = Entry::new(service, username).expect("Failed to get keyring entry");
|
|
let _ = entry.delete_credential();
|
|
}
|