Completed
Push — master ( d1f765...6eaa3e )
by
unknown
07:03
created

ImageUtility::getRedirectResponse()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

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