• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

liip / LiipImagineBundle / 12293640938

12 Dec 2024 09:36AM UTC coverage: 81.636% (-0.03%) from 81.665%
12293640938

push

github

web-flow
Merge pull request #1615 from liip/cs

apply cs fixer

1 of 2 new or added lines in 2 files covered. (50.0%)

1 existing line in 1 file now uncovered.

2276 of 2788 relevant lines covered (81.64%)

103.05 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

78.26
/Binary/Loader/FileSystemLoader.php
1
<?php
2

3
/*
4
 * This file is part of the `liip/LiipImagineBundle` project.
5
 *
6
 * (c) https://github.com/liip/LiipImagineBundle/graphs/contributors
7
 *
8
 * For the full copyright and license information, please view the LICENSE.md
9
 * file that was distributed with this source code.
10
 */
11

12
namespace Liip\ImagineBundle\Binary\Loader;
13

14
use Liip\ImagineBundle\Binary\Locator\LocatorInterface;
15
use Liip\ImagineBundle\Exception\Binary\Loader\NotLoadableException;
16
use Liip\ImagineBundle\Exception\InvalidArgumentException;
17
use Liip\ImagineBundle\Model\FileBinary;
18
use Symfony\Component\HttpFoundation\File\MimeType\ExtensionGuesserInterface as DeprecatedExtensionGuesserInterface;
19
use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface as DeprecatedMimeTypeGuesserInterface;
20
use Symfony\Component\Mime\MimeTypeGuesserInterface;
21
use Symfony\Component\Mime\MimeTypesInterface;
22

23
class FileSystemLoader implements LoaderInterface
24
{
25
    /**
26
     * @var MimeTypeGuesserInterface|DeprecatedMimeTypeGuesserInterface
27
     */
28
    protected $mimeTypeGuesser;
29

30
    /**
31
     * @var MimeTypesInterface|DeprecatedExtensionGuesserInterface
32
     */
33
    protected $extensionGuesser;
34

35
    /**
36
     * @var LocatorInterface
37
     */
38
    protected $locator;
39

40
    /**
41
     * @param MimeTypeGuesserInterface|DeprecatedMimeTypeGuesserInterface $mimeGuesser
42
     * @param MimeTypesInterface|DeprecatedExtensionGuesserInterface      $extensionGuesser
43
     */
44
    public function __construct(
45
        $mimeGuesser,
46
        $extensionGuesser,
47
        LocatorInterface $locator
48
    ) {
49
        if (!$mimeGuesser instanceof MimeTypeGuesserInterface && !$mimeGuesser instanceof DeprecatedMimeTypeGuesserInterface) {
286✔
50
            throw new InvalidArgumentException('$mimeGuesser must be an instance of Symfony\Component\Mime\MimeTypeGuesserInterface or Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface');
13✔
51
        }
52

53
        if (!$extensionGuesser instanceof MimeTypesInterface && !$extensionGuesser instanceof DeprecatedExtensionGuesserInterface) {
273✔
54
            throw new InvalidArgumentException('$extensionGuesser must be an instance of Symfony\Component\Mime\MimeTypesInterface or Symfony\Component\HttpFoundation\File\MimeType\ExtensionGuesserInterface');
13✔
55
        }
56

57
        if (interface_exists(MimeTypeGuesserInterface::class) && $mimeGuesser instanceof DeprecatedMimeTypeGuesserInterface) {
260✔
58
            @trigger_error(\sprintf('Passing a %s to "%s()" is deprecated since Symfony 4.3, pass a "%s" instead.', DeprecatedMimeTypeGuesserInterface::class, __METHOD__, MimeTypeGuesserInterface::class), E_USER_DEPRECATED);
×
59
        }
60

61
        if (interface_exists(MimeTypesInterface::class) && $extensionGuesser instanceof DeprecatedExtensionGuesserInterface) {
260✔
62
            @trigger_error(\sprintf('Passing a %s to "%s()" is deprecated since Symfony 4.3, pass a "%s" instead.', DeprecatedExtensionGuesserInterface::class, __METHOD__, MimeTypesInterface::class), E_USER_DEPRECATED);
×
63
        }
64

65
        $this->mimeTypeGuesser = $mimeGuesser;
260✔
66
        $this->extensionGuesser = $extensionGuesser;
260✔
67
        $this->locator = $locator;
260✔
68
    }
140✔
69

70
    public function find($path)
71
    {
72
        $path = $this->locator->locate($path);
208✔
73

74
        if (false === is_file($path)) {
169✔
UNCOV
75
            throw new NotLoadableException(\sprintf('Source image: "%s" is no file.', $path));
×
76
        }
77

78
        $mimeType = $this->mimeTypeGuesser instanceof DeprecatedMimeTypeGuesserInterface ? $this->mimeTypeGuesser->guess($path) : $this->mimeTypeGuesser->guessMimeType($path);
169✔
79
        $extension = $this->getExtension($mimeType);
169✔
80

81
        return new FileBinary($path, $mimeType, $extension);
169✔
82
    }
83

84
    private function getExtension(?string $mimeType): ?string
85
    {
86
        if ($this->extensionGuesser instanceof DeprecatedExtensionGuesserInterface) {
169✔
87
            return $this->extensionGuesser->guess($mimeType);
×
88
        }
89

90
        if (null === $mimeType) {
169✔
91
            return null;
×
92
        }
93

94
        return $this->extensionGuesser->getExtensions($mimeType)[0] ?? null;
169✔
95
    }
96
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc