Updated Drupal to 8.6. This goes with the following updates because it's possible...
[yaffs-website] / vendor / symfony / http-foundation / File / MimeType / FileinfoMimeTypeGuesser.php
1 <?php
2
3 /*
4  * This file is part of the Symfony package.
5  *
6  * (c) Fabien Potencier <fabien@symfony.com>
7  *
8  * For the full copyright and license information, please view the LICENSE
9  * file that was distributed with this source code.
10  */
11
12 namespace Symfony\Component\HttpFoundation\File\MimeType;
13
14 use Symfony\Component\HttpFoundation\File\Exception\AccessDeniedException;
15 use Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException;
16
17 /**
18  * Guesses the mime type using the PECL extension FileInfo.
19  *
20  * @author Bernhard Schussek <bschussek@gmail.com>
21  */
22 class FileinfoMimeTypeGuesser implements MimeTypeGuesserInterface
23 {
24     private $magicFile;
25
26     /**
27      * @param string $magicFile A magic file to use with the finfo instance
28      *
29      * @see http://www.php.net/manual/en/function.finfo-open.php
30      */
31     public function __construct($magicFile = null)
32     {
33         $this->magicFile = $magicFile;
34     }
35
36     /**
37      * Returns whether this guesser is supported on the current OS/PHP setup.
38      *
39      * @return bool
40      */
41     public static function isSupported()
42     {
43         return \function_exists('finfo_open');
44     }
45
46     /**
47      * {@inheritdoc}
48      */
49     public function guess($path)
50     {
51         if (!is_file($path)) {
52             throw new FileNotFoundException($path);
53         }
54
55         if (!is_readable($path)) {
56             throw new AccessDeniedException($path);
57         }
58
59         if (!self::isSupported()) {
60             return;
61         }
62
63         if (!$finfo = new \finfo(FILEINFO_MIME_TYPE, $this->magicFile)) {
64             return;
65         }
66
67         return $finfo->file($path);
68     }
69 }