use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct MetadataReport {
pub fields: Vec<MetadataField>,
pub warnings: Vec<MetadataWarning>,
}
impl MetadataReport {
pub fn has_warnings(&self) -> bool {
!self.warnings.is_empty()
}
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MetadataField {
pub category: MetadataCategory,
pub key: String,
pub value: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub enum MetadataCategory {
DocumentProperties,
RevisionHistory,
ImageExif,
Xmp,
TemplateReference,
Software,
Custom,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct MetadataWarning {
pub field: MetadataField,
pub severity: WarningSeverity,
pub reason: String,
pub strippable: bool,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Serialize, Deserialize)]
pub enum WarningSeverity {
Info,
Warn,
High,
}