// 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 _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()];