use super::*;
pub(crate) fn bytes_to_utf8_str<'a>(
bytes: &'a [u8],
stage: &'static str,
session: &SessionContext,
) -> Result<&'a str> {
std::str::from_utf8(bytes).map_err(|_| {
AsxError::new(
ErrorCode::ParseFailed,
format!("{stage}: payload is not valid UTF-8"),
ErrorContext::for_session(stage, session),
)
})
}
pub(crate) fn decode_xml_base64(value: &str, label: &str, stage: &'static str) -> Result<Vec<u8>> {
use base64::Engine as _;
let normalized: String = value.chars().filter(|c| !c.is_ascii_whitespace()).collect();
base64::engine::general_purpose::STANDARD
.decode(normalized)
.map_err(|err| {
AsxError::new(
ErrorCode::ParseFailed,
format!("failed to decode base64 {label}: {err}"),
ErrorContext::new(stage),
)
})
}