Skip to main content

ucglib/convert/
b64.rs

1use std::error::Error;
2use std::rc::Rc;
3use std::result::Result;
4
5use base64::Engine;
6use base64::{engine::general_purpose::STANDARD, engine::general_purpose::URL_SAFE};
7
8use crate::build::Val;
9use crate::convert::traits::Importer;
10
11pub struct Base64Importer {
12    pub url_safe: bool,
13}
14
15impl Importer for Base64Importer {
16    fn import(&self, bytes: &[u8]) -> Result<Rc<Val>, Box<dyn Error>> {
17        return if self.url_safe {
18            Ok(Rc::new(Val::Str(STANDARD.encode(bytes).into())))
19        } else {
20            Ok(Rc::new(Val::Str(URL_SAFE.encode(bytes).into())))
21        };
22    }
23}