common_access_token/
util.rs1use base64::{engine::general_purpose, Engine as _};
12use rand::distr::Alphanumeric;
13use rand::Rng;
14
15pub fn to_base64_no_padding(data: &[u8]) -> String {
17 general_purpose::URL_SAFE_NO_PAD.encode(data)
18}
19
20pub fn from_base64_url(data: &str) -> Result<Vec<u8>, base64::DecodeError> {
22 general_purpose::URL_SAFE_NO_PAD.decode(data)
23}
24
25pub fn generate_random_hex(len: usize) -> String {
27 let random_bytes: Vec<u8> = rand::rng().sample_iter(&Alphanumeric).take(len).collect();
28
29 hex::encode(&random_bytes[0..len / 2])
30}
31
32pub fn current_time_secs() -> i64 {
34 std::time::SystemTime::now()
35 .duration_since(std::time::UNIX_EPOCH)
36 .unwrap_or_default()
37 .as_secs() as i64
38}