Crate cdumay_base64

Crate cdumay_base64 

Source
Expand description

License: BSD-3-Clause cdumay_base64 on crates.io cdumay_base64 on docs.rs Source Code Repository

A small crate to manipulate base64 data.

§Features

  • Maps all variants of base64::DecodeError into structured cdumay_core::Error types.
  • Provides unique error codes, HTTP status codes, and human-readable messages.
  • Easily attach contextual metadata for better debugging.
  • Simple integration into any Rust project using base64 and cdumay_core.
  • Provides convenient macro for error conversion

§Usage

Using the Base64DecodeErrorConverter directly:

use base64::{engine::general_purpose, Engine as _};
use std::collections::BTreeMap;
use cdumay_core::{ErrorConverter, Error};
use cdumay_base64::Base64DecodeErrorConverter;

fn decode_base64(input: &str) -> cdumay_core::Result<Vec<u8>> {
    general_purpose::STANDARD.decode(input).map_err(|e| {
        let mut context = BTreeMap::new();
        context.insert("input".to_string(), serde_value::Value::String(input.to_string()));
        Base64DecodeErrorConverter::convert(&e, "Failed to decode base64".to_string(), context)
    })
}

Using the convert_decode_result! macro:

use base64::{engine::general_purpose, Engine as _};
use cdumay_core::{ErrorConverter, Error};
use std::collections::BTreeMap;
use cdumay_base64::convert_decode_result;

fn decode_base64(input: &str) -> cdumay_core::Result<Vec<u8>> {
    let mut context = BTreeMap::new();
    context.insert("input".to_string(), serde_value::Value::String(input.to_string()));
    convert_decode_result!(general_purpose::STANDARD.decode(input), context, "Failed to decode base64")
}

Macros§

convert_decode_result
Macro to convert a Result<T, base64::DecodeError> into a cdumay_core::Result<T>

Structs§

Base64DecodeErrorConverter
A helper structure that converts base64::DecodeError into a structured Error.
InvalidByteError
Error : InvalidByteError (Kind: Base64Decode)
InvalidLastSymbolError
Error : InvalidLastSymbolError (Kind: Base64Decode)
InvalidLengthError
Error : InvalidLengthError (Kind: Base64Decode)
InvalidPaddingError
Error : InvalidPaddingError (Kind: Base64Decode)

Constants§

Base64Decode
ErrorKind : Base64Decode (400) - Base64 decode error