difftreelog
build use non-deprecated base64 api
in: master
1 file changed
crates/jrsonnet-stdlib/src/encoding.rsdiffbeforeafterboth1use jrsonnet_evaluator::{2 error::{ErrorKind::RuntimeError, Result},3 function::builtin,4 typed::{Either, Either2},5 IBytes, IStr,6};78#[builtin]9pub fn builtin_encode_utf8(str: IStr) -> IBytes {10 str.cast_bytes()11}1213#[builtin]14pub fn builtin_decode_utf8(arr: IBytes) -> Result<IStr> {15 Ok(arr16 .cast_str()17 .ok_or_else(|| RuntimeError("bad utf8".into()))?)18}1920#[builtin]21pub fn builtin_base64(input: Either![IStr, IBytes]) -> String {22 use Either2::*;23 match input {24 A(l) => base64::encode(l.as_bytes()),25 B(a) => base64::encode(a.as_slice()),26 }27}2829#[builtin]30pub fn builtin_base64_decode_bytes(str: IStr) -> Result<IBytes> {31 Ok(base64::decode(str.as_bytes())32 .map_err(|_| RuntimeError("bad base64".into()))?33 .as_slice()34 .into())35}3637#[builtin]38pub fn builtin_base64_decode(str: IStr) -> Result<String> {39 let bytes = base64::decode(str.as_bytes()).map_err(|_| RuntimeError("bad base64".into()))?;40 Ok(String::from_utf8(bytes).map_err(|_| RuntimeError("bad utf8".into()))?)41}1use base64::{engine::general_purpose::STANDARD, Engine};2use jrsonnet_evaluator::{3 error::{ErrorKind::RuntimeError, Result},4 function::builtin,5 typed::{Either, Either2},6 IBytes, IStr,7};89#[builtin]10pub fn builtin_encode_utf8(str: IStr) -> IBytes {11 str.cast_bytes()12}1314#[builtin]15pub fn builtin_decode_utf8(arr: IBytes) -> Result<IStr> {16 Ok(arr17 .cast_str()18 .ok_or_else(|| RuntimeError("bad utf8".into()))?)19}2021#[builtin]22pub fn builtin_base64(input: Either![IStr, IBytes]) -> String {23 use Either2::*;24 match input {25 A(l) => STANDARD.encode(l.as_bytes()),26 B(a) => STANDARD.encode(a.as_slice()),27 }28}2930#[builtin]31pub fn builtin_base64_decode_bytes(str: IStr) -> Result<IBytes> {32 Ok(STANDARD33 .decode(str.as_bytes())34 .map_err(|e| RuntimeError(format!("invalid base64: {e}").into()))?35 .as_slice()36 .into())37}3839#[builtin]40pub fn builtin_base64_decode(str: IStr) -> Result<String> {41 let bytes = STANDARD42 .decode(str.as_bytes())43 .map_err(|e| RuntimeError(format!("invalid base64: {e}").into()))?;44 Ok(String::from_utf8(bytes).map_err(|_| RuntimeError("bad utf8".into()))?)45}