blob: 293449a0e07232baff3ff27bd11f2d6b9f81a209 [file] [log] [blame]
// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'default_extension_map.dart';
/// Default extension for recognized MIME types.
///
/// Is the inverse of [defaultExtensionMap], and where that
/// map has multiple extensions which map to the same
/// MIME type, this map maps that MIME type to a *default*
/// extension.
///
/// Used by [extensionFromMime].
final Map<String, String> _defaultMimeTypeMap = {
for (var entry in defaultExtensionMap.entries) entry.value: entry.key,
'application/msword': 'doc',
'application/vnd.ms-excel': 'xls',
'application/vnd.ms-powerpoint': 'ppt',
'application/x-debian-package': 'deb',
'application/xhtml+xml': 'xhtml',
'application/xml': 'xml',
'audio/x-aiff': 'aif',
'audio/midi': 'mid',
'audio/mp4': 'm4a',
'audio/ogg': 'ogg',
'image/jpeg': 'jpg',
'image/tiff': 'tif',
'image/svg+xml': 'svg',
'model/vrml': 'vrml',
'text/calendar': 'ics',
'text/html': 'html',
'text/javascript': 'js',
'text/markdown': 'md',
'text/plain': 'txt',
'text/sgml': 'sgml',
'text/x-asm': 'asm',
'text/x-c': 'c',
'text/x-pascal': 'pas',
'video/mp4': 'mp4',
'video/mpeg': 'mpg',
'video/quicktime': 'mov',
'video/x-matroska': 'mkv',
};
/// The default file extension for a given MIME type.
///
/// If [mimeType] has multiple associated extensions,
/// the returned string is one of those, chosen as the default
/// extension for that MIME type.
///
/// Returns `null` if [mimeType] is not a recognized and
/// supported MIME type.
String? extensionFromMime(String mimeType) =>
_defaultMimeTypeMap[mimeType.toLowerCase()];