wedpr_l_common_coder_base64/
lib.rs1#[macro_use]
6extern crate wedpr_l_macros;
7
8use wedpr_l_utils::{error::WedprError, traits::Coder};
9
10#[derive(Default, Debug, Clone)]
12pub struct WedprBase64 {}
13
14impl Coder for WedprBase64 {
15 fn encode<T: ?Sized + AsRef<[u8]>>(&self, input: &T) -> String {
16 base64::encode(input)
17 }
18
19 fn decode(&self, input: &str) -> Result<Vec<u8>, WedprError> {
20 match base64::decode(input) {
21 Ok(v) => return Ok(v),
22 Err(_) => {
23 wedpr_println!("Base64 decoding failed, input was: {}", input);
24 return Err(WedprError::DecodeError);
25 },
26 };
27 }
28}
29
30#[cfg(test)]
31mod tests {
32 use super::*;
33
34 #[test]
35 fn test_base64() {
36 let base64 = WedprBase64::default();
37 let str = "g6sLGLyLvnkmE6V0Ico=";
38 let wrong_str = "g6sLGLyLvnkmE6V0Ice=";
39 let bytes = base64.decode(&str).unwrap();
40 let recovered_str = base64.encode(&bytes);
41 assert_eq!(str, recovered_str);
42 assert!(wrong_str != recovered_str);
43 }
44}