diff --git a/server/src/utils.rs b/server/src/utils.rs new file mode 100644 index 0000000..a0ba03c --- /dev/null +++ b/server/src/utils.rs @@ -0,0 +1,30 @@ +// Generic functions used by pretty much everyone +use base64::{encode_config, decode_config, URL_SAFE}; +use std::str; + + +pub fn encode_param(raw: &str) -> String { + encode_config(raw, URL_SAFE) +} + +pub fn decode_param(enc: &str) -> Result { + let bytes = decode_config(enc, URL_SAFE).unwrap(); + let res = str::from_utf8(&bytes); + match res { + Ok(data) => Ok(data.into()), + Err(_e) => Err(1) + } +} + +#[cfg(test)] +mod encoder_decoder_tests { + use super::*; + + #[test] + fn encode_decode() { + let raw = "some random bs"; + let enc = encode_param(raw); + let dec = decode_param(&enc); + assert_eq!(raw, dec.unwrap()); + } +} \ No newline at end of file