1<?php
2declare(strict_types = 1);
3namespace TYPO3\CMS\Core\Resource;
4
5/*
6 * This file is part of the TYPO3 CMS project.
7 *
8 * It is free software; you can redistribute it and/or modify it under
9 * the terms of the GNU General Public License, either version 2
10 * of the License, or any later version.
11 *
12 * For the full copyright and license information, please read the
13 * LICENSE.txt file that was distributed with this source code.
14 *
15 * The TYPO3 project - inspiring people to share!
16 */
17
18/**
19 * This class contains a list of all available / known mimetypes and file extensions,
20 * and is automatically generated by TYPO3 via Core/Build/Scripts/generateMimeTypes.php
21 */
22final class MimeTypeDetector
23{
24    /**
25     * @var MimeTypeCollection
26     */
27    private $collection;
28
29    public function __construct()
30    {
31        $this->collection = new MimeTypeCollection();
32    }
33
34    /**
35     * @param string $fileExtension
36     * @return array<int, string>
37     */
38    public function getMimeTypesForFileExtension(string $fileExtension): array
39    {
40        $mimeTypes = [];
41        $fileExtension = strtolower($fileExtension);
42        foreach ($this->collection->getMap() as $mimeType => $availableExtensions) {
43            if (in_array($fileExtension, $availableExtensions, true)) {
44                $mimeTypes[] = $mimeType;
45            }
46        }
47        return $mimeTypes;
48    }
49
50    /**
51     * @param string $mimeType
52     * @return array<int, string>
53     */
54    public function getFileExtensionsForMimeType(string $mimeType): array
55    {
56        return $this->collection->getMap()[strtolower($mimeType)] ?? [];
57    }
58}
59