use armour::{const_hasher, types::low_id::LowId};
use data_encoding::{BASE32_NOPAD, BASE64URL_NOPAD};
use harsh::Harsh;
use sqids::{Options, Sqids};
const HARSH_ALPHABET: &[u8] = b"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
const SEPARATORS: &[u8] = b"cfhistuCFHISTU";
const_hasher!(test_key, "TEST");
fn main() -> std::io::Result<()> {
let harsh = Harsh::builder()
.salt(b"asdasdasd")
.length(3)
.alphabet(HARSH_ALPHABET)
.separators(SEPARATORS)
.build()
.unwrap();
println!("generate 10 keys in hashids");
for i in 20..30 {
let val = harsh.encode(&[i]);
println!("{val}");
}
let sqids = Sqids::new(Some(Options::new(
Some("FxnXM1kBN6cuhsAvjW3Co7l2RePyY8DwaU04Tzt9fHQrqSVKdpimLGIJOgb5ZE".to_string()),
Some(3),
None,
)))
.unwrap();
println!("generate 10 keys in sqids");
for i in 20..30 {
let val = sqids.encode(&[i]).unwrap();
println!("{val}");
}
for _ in 0..10 {
let val = LowId::<test_key::Hasher>::new(0);
println!("custom: {val}");
let slice = &val.get().to_le_bytes()[..7];
let val = bs58::encode(slice).into_string();
println!("base58: {val}");
let b64 = BASE64URL_NOPAD.encode(slice);
println!("base64: {b64}");
let b32 = BASE32_NOPAD.encode(slice);
println!("base32: {b32}");
}
Ok(())
}