use thiserror::Error;
#[derive(Debug, Error)]
pub enum XarfError {
#[error("invalid JSON: {0}")]
InvalidJson(String),
#[error("schema validation failed ({} error(s))", .0.len())]
Validation(Vec<ValidationError>),
#[error("schema error: {0}")]
Schema(String),
#[error("v3 conversion failed: {0}")]
V3Conversion(String),
#[error("evidence error: {0}")]
Evidence(String),
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ValidationError {
pub field: String,
pub message: String,
}
impl ValidationError {
pub fn new(field: impl Into<String>, message: impl Into<String>) -> Self {
Self {
field: field.into(),
message: message.into(),
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ValidationWarning {
pub field: String,
pub message: String,
}
impl ValidationWarning {
pub fn new(field: impl Into<String>, message: impl Into<String>) -> Self {
Self {
field: field.into(),
message: message.into(),
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct ValidationInfo {
pub field: String,
pub message: String,
}
impl ValidationInfo {
pub fn new(field: impl Into<String>, message: impl Into<String>) -> Self {
Self {
field: field.into(),
message: message.into(),
}
}
}
pub type Result<T> = std::result::Result<T, XarfError>;