#[cfg(feature = "shawn")]
#[allow(dead_code)]
use rand::Rng;
use rand::distr::Alphanumeric;
use std::time::{SystemTime, UNIX_EPOCH};
pub trait Shawn {
#[allow(dead_code)]
fn test() {}
#[allow(dead_code)]
fn random_string(length: usize) -> String {
let mut rng = rand::rng();
(0..length)
.map(|_| rng.sample(Alphanumeric) as char)
.collect()
}
#[allow(dead_code)]
fn timestamp() -> u64 {
let timestamp: u64 = SystemTime::now()
.duration_since(UNIX_EPOCH)
.expect("Time went backwards")
.as_secs();
timestamp }
#[allow(dead_code)]
fn order_unique(sid: String) -> String {
let sid = if sid.len() > 32 {
sid.chars().take(32).collect()
} else {
sid
};
let timestamp = SystemTime::now()
.duration_since(UNIX_EPOCH)
.expect("Time went backwards 时间倒流了")
.as_secs(); let max_random_length = 32 - sid.len() - timestamp.to_string().len() - 2; let random_string: String = rand::rng()
.sample_iter(&Alphanumeric)
.take(max_random_length) .map(char::from)
.collect();
let input_string = format!("{}_{}_{}", sid, timestamp, random_string);
input_string
}
#[allow(dead_code)]
fn order_to_sid(order: String) -> Vec<String> {
let all_str: Vec<&str> = order.split('_').collect();
let mut all: Vec<String> = Vec::new(); for (_index, s) in all_str.iter().enumerate() {
all.push(s.to_string()); }
all
}
fn user_chrome_agent() -> String {
let chrome_agent = "Mozilla/5.0 (Linux; Android 10; Rust App Pay Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Mobile Safari/537.36";
chrome_agent.to_owned()
}
}