56 lines
1.7 KiB
Dart
56 lines
1.7 KiB
Dart
|
|
// 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()];
|