rocal-cli 0.2.2

CLI tool for local-first-development driven web application framework
Documentation
use keyring::{Entry, Error};

const DEFAULT_KEY: &'static str = "default";

pub struct TokenManager;

#[allow(dead_code)]
impl TokenManager {
    pub fn set_token(kind: Kind, token: &str) -> Result<(), Error> {
        let entry = Entry::new(&kind.to_string(), DEFAULT_KEY)?;
        entry.set_password(token)?;
        Ok(())
    }

    pub fn get_token(kind: Kind) -> Result<String, Error> {
        let entry = Entry::new(&kind.to_string(), DEFAULT_KEY)?;
        let token = entry.get_password()?;
        Ok(token)
    }

    pub fn delete_token(kind: Kind) -> Result<(), Error> {
        let entry = Entry::new(&kind.to_string(), DEFAULT_KEY)?;
        entry.delete_credential()?;
        Ok(())
    }
}

pub enum Kind {
    RocalAccessToken,
    RocalRefreshToken,
}

impl Kind {
    pub fn to_string(&self) -> String {
        match self {
            Kind::RocalAccessToken => {
                format!("{}:rocal_access_token", env!("BUILD_PROFILE"))
            }
            Kind::RocalRefreshToken => {
                format!("{}:rocal_refresh_token", env!("BUILD_PROFILE"))
            }
        }
    }
}