use std::fmt::Debug;
use std::io::Read;
use std::path::Path;
use crate::{
MediaStreamClassifierBackend,
MediaStreamType,
MimeResult,
};
use super::media_stream_classifier_helpers::with_temp_reader;
pub trait FileBasedMediaStreamClassifier: Debug + Send + Sync {
fn classify_by_local_file(&self, file: &Path) -> MimeResult<MediaStreamType>;
}
impl<T> MediaStreamClassifierBackend for T
where
T: FileBasedMediaStreamClassifier,
{
fn classify_by_local_file(&self, file: &Path) -> MimeResult<MediaStreamType> {
FileBasedMediaStreamClassifier::classify_by_local_file(self, file)
}
fn classify_by_content(&self, reader: &mut dyn Read) -> MimeResult<MediaStreamType> {
with_temp_reader(reader, |path| {
FileBasedMediaStreamClassifier::classify_by_local_file(self, path)
})
}
}