atac 0.13.0

Arguably a Terminal API Client. Feature-full, free, open-source, offline and account-less.
use serde::{Deserialize, Serialize};
use strum::Display;
use crate::request::auth::Auth::{BasicAuth, BearerToken, NoAuth};

#[derive(Clone, Default, Debug, Display, Serialize, Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum Auth {
    #[default]
    #[strum(to_string = "No Auth")]
    NoAuth,
    #[strum(to_string = "Basic")]
    BasicAuth(String, String),
    #[strum(to_string = "Bearer")]
    BearerToken(String)
}

pub fn next_auth(auth: &Auth) -> Auth {
    match auth {
        NoAuth => BasicAuth(String::new(), String::new()),
        BasicAuth(_, _) => BearerToken(String::new()),
        BearerToken(_) => NoAuth
    }
}