use base64::{engine::general_purpose, Engine as _};
#[derive(Debug, Clone, Copy)]
pub enum Base64Engine {
Standard,
StandardNoPad,
UrlSafe,
UrlSafeNoPad,
}
pub fn base64_encode(bytes: &[u8], engine: Base64Engine) -> String {
match engine {
Base64Engine::Standard => general_purpose::STANDARD.encode(bytes),
Base64Engine::StandardNoPad => general_purpose::STANDARD_NO_PAD.encode(bytes),
Base64Engine::UrlSafe => general_purpose::URL_SAFE.encode(bytes),
Base64Engine::UrlSafeNoPad => general_purpose::URL_SAFE_NO_PAD.encode(bytes),
}
}
pub fn base64_decode(b64str: &str, engine: Base64Engine) -> Result<Vec<u8>, base64::DecodeError> {
match engine {
Base64Engine::Standard => general_purpose::STANDARD.decode(b64str),
Base64Engine::StandardNoPad => general_purpose::STANDARD_NO_PAD.decode(b64str),
Base64Engine::UrlSafe => general_purpose::URL_SAFE.decode(b64str),
Base64Engine::UrlSafeNoPad => general_purpose::URL_SAFE_NO_PAD.decode(b64str),
}
}