const SERVICE_NAME: &str = "pigeon";
pub fn set_secret(alias: &str, secret: &str) -> Result<(), String> {
let entry = keyring::Entry::new(SERVICE_NAME, alias)
.map_err(|err| format!("failed to open keychain entry for '{alias}': {err}"))?;
entry
.set_password(secret)
.map_err(|err| format!("failed to store secret for '{alias}': {err}"))
}
pub fn get_secret(alias: &str) -> Result<String, String> {
let entry = keyring::Entry::new(SERVICE_NAME, alias)
.map_err(|err| format!("failed to open keychain entry for '{alias}': {err}"))?;
entry
.get_password()
.map_err(|err| format!("failed to read secret for '{alias}': {err}"))
}
pub fn delete_secret(alias: &str) -> Result<(), String> {
let entry = keyring::Entry::new(SERVICE_NAME, alias)
.map_err(|err| format!("failed to open keychain entry for '{alias}': {err}"))?;
entry
.delete_credential()
.map_err(|err| format!("failed to delete secret for '{alias}': {err}"))
}