Skip to main content

Crate qubit_mime

Crate qubit_mime 

Source
Expand description

§Qubit MIME

MIME type detection based on filename glob rules, content magic rules, and optional native command backends.

The crate ships with two detector providers:

  • repository: an embedded detector that uses the bundled MIME repository.
  • file: a detector that delegates content detection to the system file --mime-type --brief command and uses the repository for filename guesses.

Detectors are created through MimeDetectorRegistry. The configured default detector is tried first, followed by the configured fallback chain. The special selector auto chooses the highest-priority available provider from the registry.

§Examples

Create a detector from the default configuration:

use qubit_mime::{
    MimeConfig,
    MimeDetector,
    MimeDetectorRegistry,
    MimeResult,
};

let detector =
    MimeDetectorRegistry::default_registry()?.create_default_box(&MimeConfig::default())?;
assert_eq!(
    Some("application/pdf".to_owned()),
    detector.detect_by_filename("document.pdf"),
);

Configure a preferred detector and an explicit fallback. This is useful when file should be used on systems where it is available, while still allowing deterministic repository detection on minimal CI images:

use qubit_config::Config;
use qubit_mime::{
    CONFIG_MIME_DETECTOR_DEFAULT,
    CONFIG_MIME_DETECTOR_FALLBACKS,
    MimeConfig,
    MimeDetector,
    MimeDetectorRegistry,
    MimeResult,
};

let mut source = Config::new();
source.set(CONFIG_MIME_DETECTOR_DEFAULT, "file")?;
source.set(CONFIG_MIME_DETECTOR_FALLBACKS, "repository")?;

let config = MimeConfig::from_config(&source)?;
let detector = MimeDetectorRegistry::default_registry()?.create_default_box(&config)?;
assert_eq!(
    Some("image/png".to_owned()),
    detector.detect_by_filename("image.png"),
);

Re-exports§

pub use classifier::FfprobeCommandMediaStreamClassifier;
pub use classifier::FfprobeCommandMediaStreamClassifierProvider;
pub use classifier::FileBasedMediaStreamClassifier;
pub use classifier::MediaStreamClassifier;
pub use classifier::MediaStreamClassifierAvailability;
pub use classifier::MediaStreamClassifierBackend;
pub use classifier::MediaStreamClassifierProvider;
pub use classifier::MediaStreamClassifierRegistry;
pub use classifier::MediaStreamClassifierSpec;
pub use classifier::MediaStreamType;
pub use detector::DetectionSource;
pub use detector::FileBasedMimeDetector;
pub use detector::FileCommandMimeDetector;
pub use detector::FileCommandMimeDetectorProvider;
pub use detector::MimeDetectionPolicy;
pub use detector::MimeDetector;
pub use detector::MimeDetectorAvailability;
pub use detector::MimeDetectorBackend;
pub use detector::MimeDetectorCore;
pub use detector::MimeDetectorProvider;
pub use detector::MimeDetectorRegistry;
pub use detector::MimeDetectorSpec;
pub use detector::RepositoryMimeDetector;
pub use detector::RepositoryMimeDetectorProvider;
pub use detector::StreamBasedMimeDetector;
pub use repository::MagicValueType;
pub use repository::MimeGlob;
pub use repository::MimeMagic;
pub use repository::MimeMagicMatcher;
pub use repository::MimeRepository;
pub use repository::MimeType;
pub use repository::MimeTypeBuilder;

Modules§

classifier
Media stream classifier implementations.
detector
MIME detector implementations.
repository
MIME repository data model and freedesktop rule parsing.

Structs§

MimeConfig
Runtime configuration for MIME detectors.
ProviderDescriptor
Stable provider metadata used for registration and selection.
ProviderName
Stable provider id or alias accepted by a registry.

Enums§

MimeError
Error type for MIME repository parsing and I/O backed detection.
ProviderAvailability
Availability of a provider in the current runtime environment.
ProviderCreateError
Error returned by one provider while creating a service.
ProviderFailure
Failure recorded for one provider candidate.
ProviderRegistryError
Error returned by provider registries.
ProviderSelection
Provider candidates used by registry selection.

Constants§

AVI_MIME_TYPE
AVI MIME type.
CONFIG_MEDIA_STREAM_CLASSIFIER_DEFAULT
Configuration key selecting the default media stream classifier implementation.
CONFIG_MIME_AMBIGUOUS_MIME_MAPPING
Configuration key defining ambiguous extension to MIME mappings.
CONFIG_MIME_DETECTOR_DEFAULT
Configuration key selecting the default MIME detector implementation.
CONFIG_MIME_DETECTOR_FALLBACKS
Configuration key listing fallback MIME detector implementations.
CONFIG_MIME_ENABLE_PRECISE_DETECTION
Configuration key controlling precise MIME detection.
CONFIG_MIME_PRECISE_DETECTION_PATTERNS
Configuration key listing extensions that should use precise detection.
CSV_MIME_TYPE
CSV MIME type.
CSV_MIME_TYPES
CSV MIME types.
DEFAULT_AMBIGUOUS_MIME_MAPPING
Default ambiguous extension mapping: extension:video_mime,audio_mime.
DEFAULT_ENABLE_PRECISE_DETECTION
Default value for precise media stream based detection.
DEFAULT_MEDIA_STREAM_CLASSIFIER
Default media stream classifier backend selector.
DEFAULT_MIME_DETECTOR
Default MIME detector backend selector.
DEFAULT_MIME_DETECTOR_FALLBACKS
Default fallback MIME detector backend selector list.
DEFAULT_PRECISE_DETECTION_PATTERNS
Default comma-separated extensions that may need media stream classification.
ENV_MEDIA_STREAM_CLASSIFIER_DEFAULT
Environment variable selecting the default media stream classifier implementation.
ENV_MIME_DETECTOR_AMBIGUOUS_MIME_MAPPING
Environment variable defining ambiguous extension to MIME mappings.
ENV_MIME_DETECTOR_DEFAULT
Environment variable selecting the default MIME detector implementation.
ENV_MIME_DETECTOR_ENABLE_PRECISE_DETECTION
Environment variable controlling precise MIME detection.
ENV_MIME_DETECTOR_FALLBACKS
Environment variable listing fallback MIME detector implementations.
ENV_MIME_DETECTOR_PRECISE_DETECTION_PATTERNS
Environment variable listing extensions that should use precise detection.
EXCEL_MIME_TYPE
Default Microsoft Excel MIME type.
EXCEL_MIME_TYPES
Microsoft Excel MIME types.
FLV_MIME_TYPE
FLV MIME type.
GIF_MIME_TYPE
GIF MIME type.
JPEG_MIME_TYPE
JPEG MIME type.
JSON_MIME_TYPE
JSON MIME type.
JSON_MIME_TYPES
JSON MIME types.
MOV_MIME_TYPE
QuickTime MIME type.
MP3_MIME_TYPE
MP3 MIME type.
MP4_MIME_TYPE
MP4 MIME type.
OGG_MIME_TYPE
OGG audio MIME type.
PDF_MIME_TYPE
PDF MIME type.
PDF_MIME_TYPES
PDF MIME types.
PNG_MIME_TYPE
PNG MIME type.
POWERPOINT_MIME_TYPE
Default Microsoft PowerPoint MIME type.
POWERPOINT_MIME_TYPES
Microsoft PowerPoint MIME types.
WAV_MIME_TYPE
WAV MIME type.
WEBM_MIME_TYPE
WEBM video MIME type.
WMV_MIME_TYPE
WMV MIME type.
WORD_MIME_TYPE
Default Microsoft Word MIME type.
WORD_MIME_TYPES
Microsoft Word MIME types.
XML_MIME_TYPE
XML MIME type.
XML_MIME_TYPES
XML MIME types.

Traits§

ServiceProvider
Factory contract for one service implementation.
ServiceSpec
Type-level description of one pluggable service family.

Type Aliases§

MimeResult
A convenient alias for results returned by MIME-related functions.