eclipse-sanitizer 0.1.1

A fast Rust CLI for sanitizing metadata from documents and images
use anyhow::Result;
use std::fs::File;
use std::path::Path;

use crate::models::{FileKind, SanitizationPlan};

pub mod jpeg;
pub mod ooxml;
pub mod pdf;
pub mod png;

pub trait Sanitizer: Send + Sync {
    fn kind(&self) -> FileKind;
    fn plan(&self, input: &Path) -> Result<SanitizationPlan>;
    fn sanitize(&self, input: &Path, output: &mut File) -> Result<SanitizationPlan>;
}

static PDF_SANITIZER: pdf::PdfSanitizer = pdf::PdfSanitizer;
static OOXML_SANITIZER: ooxml::OoXmlSanitizer = ooxml::OoXmlSanitizer;
static PNG_SANITIZER: png::PngSanitizer = png::PngSanitizer;
static JPEG_SANITIZER: jpeg::JpegSanitizer = jpeg::JpegSanitizer;

pub fn sanitizer_for(kind: FileKind) -> &'static dyn Sanitizer {
    match kind {
        FileKind::Pdf => &PDF_SANITIZER,
        FileKind::OfficeOpenXml => &OOXML_SANITIZER,
        FileKind::Png => &PNG_SANITIZER,
        FileKind::Jpeg => &JPEG_SANITIZER,
    }
}