use crate::error::DatError;
use base64::engine::general_purpose;
use base64::Engine;
use std::time::SystemTime;
const ENGINE_URL_SAFE_NO_PAD: &general_purpose::GeneralPurpose = &general_purpose::URL_SAFE_NO_PAD;
pub fn encode_base64_url_no_pad<T: AsRef<[u8]>>(b: T) -> String {
ENGINE_URL_SAFE_NO_PAD.encode(b)
}
pub fn encode_base64_url_no_pad_out<T: AsRef<[u8]>>(b: T, out: &mut String) {
ENGINE_URL_SAFE_NO_PAD.encode_string(b, out)
}
pub fn decode_base64_url_no_pad<T: AsRef<[u8]>>(b64: T) -> Result<Vec<u8>, DatError> {
ENGINE_URL_SAFE_NO_PAD.decode(&b64).map_err(|_| DatError::InvalidBase64Format)
}
pub fn now_unix_timestamp() -> u64 {
SystemTime::now().duration_since(SystemTime::UNIX_EPOCH).unwrap().as_secs()
}