#[cfg(feature = "content-processing")]
use anyhow::Result;
#[cfg(feature = "content-processing")]
use std::collections::HashMap;
mod data_handlers;
mod multimedia_handlers;
mod office_handlers;
mod pdf_handler;
mod text_handlers;
mod types;
#[cfg(feature = "content-processing")]
pub use data_handlers::*;
#[cfg(feature = "content-processing")]
pub use multimedia_handlers::*;
#[cfg(feature = "content-processing")]
pub use office_handlers::*;
#[cfg(feature = "content-processing")]
pub use pdf_handler::*;
#[cfg(feature = "content-processing")]
pub use text_handlers::*;
#[cfg(feature = "content-processing")]
pub use types::*;
#[cfg(feature = "content-processing")]
pub struct ContentProcessor {
config: ContentExtractionConfig,
format_handlers: HashMap<DocumentFormat, Box<dyn FormatHandler>>,
}
#[cfg(feature = "content-processing")]
pub trait FormatHandler: Send + Sync {
fn extract_content(
&self,
data: &[u8],
config: &ContentExtractionConfig,
) -> Result<ExtractedContent>;
fn can_handle(&self, data: &[u8]) -> bool;
fn supported_extensions(&self) -> Vec<&'static str>;
}