use std::{io, time::SystemTime};
use crate::{
common::configs::{CHAR_LIST, RANDOMNESS_LENGTH},
functions::{
decode::{_decode, DecodeOptions},
encode::{_encode, EncodeOptions},
generate::{_generate, GenerateOptions},
get_randomness::{_get_randomness, GetRandomnessOptions},
rowid::{_rowid, RowIDOptions},
verify::{_verify, VerifyOptions},
},
};
pub use crate::{
common::errors::RowIDError,
functions::{generate::GenerateResult, verify::VerifyResult},
};
pub fn rowid() -> String {
_rowid(RowIDOptions {
char_list: CHAR_LIST,
randomness_length: RANDOMNESS_LENGTH,
})
}
pub fn encode<T: Into<SystemTime>>(system_time: T) -> io::Result<String> {
_encode(EncodeOptions {
char_list: CHAR_LIST,
system_time: system_time.into(),
})
}
pub fn decode<S: AsRef<str>>(encoded: S) -> io::Result<SystemTime> {
_decode(DecodeOptions { char_list: CHAR_LIST, encoded: encoded.as_ref() })
}
pub fn generate<T: Into<SystemTime>>(
system_time: T,
randomness_length: Option<usize>,
) -> GenerateResult {
_generate(GenerateOptions {
char_list: CHAR_LIST,
system_time: system_time.into(),
randomness_length: match randomness_length {
| Some(l) => l,
| None => RANDOMNESS_LENGTH,
},
})
}
pub fn verify<S: AsRef<str>>(encoded: S) -> VerifyResult {
_verify(VerifyOptions { char_list: CHAR_LIST, encoded: encoded.as_ref() })
}
pub fn get_randomness(randomness_length: usize) -> String {
_get_randomness(GetRandomnessOptions {
char_list: CHAR_LIST,
randomness_length,
})
}