promptparse 1.1.0

All-in-one Rust library for PromptPay & EMVCo QR Codes
Documentation
use std::error::Error;
use std::fmt;

#[derive(Debug)]
pub enum PromptParseError {
    InvalidPayload,
    InvalidChecksum,
    InvalidTlv,
    TagNotFound(String),
    InvalidProxyType,
    InvalidAmount,
    InvalidMobileNumber,
    MissingRequiredField(String),
    InvalidBarcode,
    ParseError(String),
    EncodingError(String),
}

impl fmt::Display for PromptParseError {
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
        match self {
            PromptParseError::InvalidPayload => write!(f, "Invalid payload format"),
            PromptParseError::InvalidChecksum => write!(f, "Invalid checksum"),
            PromptParseError::InvalidTlv => write!(f, "Invalid TLV data"),
            PromptParseError::TagNotFound(tag) => write!(f, "Tag not found: {tag}"),
            PromptParseError::InvalidProxyType => write!(f, "Invalid proxy type"),
            PromptParseError::InvalidAmount => write!(f, "Invalid amount format"),
            PromptParseError::InvalidMobileNumber => write!(f, "Invalid mobile number format"),
            PromptParseError::MissingRequiredField(field) => {
                write!(f, "Missing required field: {field}")
            }
            PromptParseError::InvalidBarcode => write!(f, "Invalid barcode format"),
            PromptParseError::ParseError(msg) => write!(f, "Parse error: {msg}"),
            PromptParseError::EncodingError(msg) => write!(f, "Encoding error: {msg}"),
        }
    }
}

impl Error for PromptParseError {}