GetImageHandler::__invoke()   A
last analyzed

Complexity

Conditions 3
Paths 3

Size

Total Lines 12
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
eloc 7
nc 3
nop 1
dl 0
loc 12
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Damax\Media\Application\Query;
6
7
use Damax\Media\Application\Exception\ImageProcessingFailure;
8
use Damax\Media\Application\Exception\MediaNotFound;
9
use Damax\Media\Domain\Exception\InvalidFile;
10
use Damax\Media\Domain\Image\Manipulator;
11
use Damax\Media\Domain\Model\MediaRepository;
12
use Symfony\Component\HttpFoundation\Response;
13
14
final class GetImageHandler extends MediaHandler
15
{
16
    private $manipulator;
17
18
    public function __construct(MediaRepository $repository, Manipulator $manipulator)
19
    {
20
        parent::__construct($repository);
21
22
        $this->manipulator = $manipulator;
23
    }
24
25
    /**
26
     * @throws MediaNotFound
27
     * @throws ImageProcessingFailure
28
     */
29
    public function __invoke(GetImage $query): Response
30
    {
31
        $media = $this->getMedia($query);
32
33
        if (!Manipulator::validParams($query->params())) {
34
            throw new ImageProcessingFailure('Invalid parameters.');
35
        }
36
37
        try {
38
            return $this->manipulator->processImage($media, $query->params());
39
        } catch (InvalidFile $e) {
40
            throw new ImageProcessingFailure('Manipulation failed.');
41
        }
42
    }
43
}
44