mime_types
The mime_types library provides convenience predicates for mapping
file extensions, file names, and URL-like resources to MIME media types
and content encodings.
The current implementation ships with a built-in registry containing a
practical set of common standard mappings plus a smaller set of de-facto
common mappings. Additional mappings can be loaded at runtime from
mime.types-style files.
Lookup is lenient by default. The convenience predicates also accept a
boolean Strict argument to restrict lookup to strict runtime
overlays plus the built-in standard registry.
The library uses the os library decompose_file_name/4 predicate
to split paths, and recognizes common compound suffixes such as .tgz
and .svgz.
API documentation
Open the ../../apis/library_index.html#mime_types link in a web browser.
Loading
To load all entities in this library, load the loader.lgt file:
| ?- logtalk_load(mime_types(loader)).
Testing
To test this library predicates, load the tester.lgt file:
| ?- logtalk_load(mime_types(tester)).
Usage
Guess the MIME type and content encoding for a file name:
| ?- mime_types::guess_file_type('archive.tgz', Type, Encoding).
Type = 'application/x-tar',
Encoding = gzip
yes
Lookup a preferred extension for a MIME type:
| ?- mime_types::guess_extension('application/json', Extension).
Extension = '.json'
yes
Read a mime.types-style file without mutating the runtime registry:
| ?- mime_types::read_mime_types('mime.types', Pairs).
Load additional runtime mappings from a mime.types-style file:
| ?- mime_types::load('mime.types').