Completed
Push — master ( c5041c...dff1db )
by
unknown
27:23
created

ImageUtility::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 11
ccs 0
cts 11
cp 0
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 9
nc 1
nop 4
crap 2
1
<?php
2
3
namespace MediaMonks\SonataMediaBundle\Utility;
4
5
use MediaMonks\SonataMediaBundle\Generator\ImageGenerator;
6
use MediaMonks\SonataMediaBundle\ParameterBag\ImageParameterBag;
7
use MediaMonks\SonataMediaBundle\ParameterBag\ParameterBagInterface;
8
use MediaMonks\SonataMediaBundle\Handler\ParameterHandlerInterface;
9
use MediaMonks\SonataMediaBundle\Model\MediaInterface;
10
use Symfony\Component\HttpFoundation\RedirectResponse;
11
12
class ImageUtility
13
{
14
    /**
15
     * @var ParameterHandlerInterface
16
     */
17
    private $parameterHandler;
18
19
    /**
20
     * @var ImageGenerator
21
     */
22
    private $imageGenerator;
23
24
    /**
25
     * @var string
26
     */
27
    private $mediaBaseUrl;
28
29
    /**
30
     * @var int
31
     */
32
    private $cacheTtl;
33
34
    /**
35
     * @param ParameterHandlerInterface $parameterHandler
36
     * @param ImageGenerator $imageGenerator
37
     * @param string $mediaBaseUrl
38
     * @param int $cacheTtl
39
     */
40
    public function __construct(
41
        ParameterHandlerInterface $parameterHandler,
42
        ImageGenerator $imageGenerator,
43
        $mediaBaseUrl,
44
        $cacheTtl
45
    ) {
46
        $this->parameterHandler = $parameterHandler;
47
        $this->imageGenerator = $imageGenerator;
48
        $this->mediaBaseUrl = $mediaBaseUrl;
49
        $this->cacheTtl = $cacheTtl;
50
    }
51
52
    /**
53
     * @param MediaInterface $media
54
     * @param ImageParameterBag $parameterBag
55
     * @return RedirectResponse
56
     */
57
    public function getRedirectResponse(MediaInterface $media, ImageParameterBag $parameterBag)
58
    {
59
        $response = new RedirectResponse($this->mediaBaseUrl.$this->getFilename($media, $parameterBag));
60
        $response->setSharedMaxAge($this->cacheTtl);
61
        $response->setMaxAge($this->cacheTtl);
62
63
        return $response;
64
    }
65
66
    /**
67
     * @param MediaInterface $media
68
     * @param ParameterBagInterface $parameterBag
69
     * @return mixed
70
     */
71
    public function getFilename(MediaInterface $media, ParameterBagInterface $parameterBag)
72
    {
73
        $parameterBag = $this->parameterHandler->validateParameterBag($media, $parameterBag);
74
        $filename = $this->imageGenerator->generate($media, $parameterBag);
75
76
        return $filename;
77
    }
78
}
79