Source code for gws.tools.mime

"""Mime types."""

import mimetypes
import os


_common = {
    'css': 'text/css',
    'csv': 'text/csv',
    'gif': 'image/gif',
    'html': 'text/html',
    'jpeg': 'image/jpeg',
    'jpg': 'image/jpeg',
    'js': 'application/javascript',
    'json': 'application/json',
    'pdf': 'application/pdf',
    'png': 'image/png',
    'svg': 'image/svg+xml',
    'ttf': 'application/x-font-ttf',
    'txt': 'text/plain',
    'xml': 'application/xml',
    'zip': 'application/zip',

    'gml2': 'application/vnd.ogc.gml',
    'gml3': 'application/vnd.ogc.gml/3.1.1',
}

_aliases = {
    'text/xml': 'xml',
    'application/xml': 'xml',
}

DEFAULT_ALLOWED = list(_common.values())


[docs]def get(key): if not key: return key = key.lower() # literal mime type if '/' in key: if key in _aliases: return _common[_aliases[key]] return key # shortcut if key in _common: return _common[key] t, _ = mimetypes.guess_type('x.' + key) return t
[docs]def for_path(path): _, ext = os.path.splitext(path) if ext[1:] in _common: return _common[ext[1:]] t, _ = mimetypes.guess_type(path) return t
[docs]def extension(type): for k, v in _common.items(): if v == type: return k t = mimetypes.guess_extension(type) if t: return t[1:]