1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
use base64_rs as base64;

pub use base64::encode;

use crate::error::ConversionError;

pub fn decode<T: AsRef<[u8]>>(val: T) -> Result<Vec<u8>, ConversionError> {
    Ok(base64::decode(val).map_err(|err| ("Error decoding base64 data", err))?)
}

pub fn decode_urlsafe<T: AsRef<[u8]>>(val: T) -> Result<Vec<u8>, ConversionError> {
    Ok(base64::decode_config(val, base64::URL_SAFE)
        .map_err(|err| ("Error decoding base64-URL data", err))?)
}

pub fn encode_urlsafe<T: AsRef<[u8]>>(val: T) -> String {
    base64::encode_config(val, base64::URL_SAFE)
}