use crate::{
MimeConfig,
MimeDetector,
ProviderCreateError,
ProviderDescriptor,
ProviderRegistryError,
RepositoryMimeDetector,
ServiceProvider,
};
use super::MimeDetectorSpec;
#[derive(Debug, Clone, Copy, Default)]
pub struct RepositoryMimeDetectorProvider;
impl ServiceProvider<MimeDetectorSpec> for RepositoryMimeDetectorProvider {
fn descriptor(&self) -> Result<ProviderDescriptor, ProviderRegistryError> {
let descriptor = ProviderDescriptor::new("repository")
.expect("built-in repository detector provider id should be valid")
.with_aliases(&["repository-mime-detector"])
.expect("built-in repository detector aliases should be valid");
Ok(descriptor)
}
fn create_box(
&self,
config: &MimeConfig,
) -> Result<Box<dyn MimeDetector>, ProviderCreateError> {
Ok(Box::new(RepositoryMimeDetector::from_mime_config(
config.clone(),
)))
}
}