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}