ImageManager   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 64
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 6
Bugs 1 Features 2
Metric Value
wmc 5
c 6
b 1
f 2
lcom 1
cbo 3
dl 0
loc 64
rs 10

4 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A getImageUrl() 0 8 1
A addAdapter() 0 4 1
A getManipulator() 0 8 2
1
<?php namespace Nord\Lumen\ImageManager;
2
3
use Nord\Lumen\FileManager\Contracts\File;
4
use Nord\Lumen\FileManager\Contracts\FileManager;
5
use Nord\Lumen\ImageManager\Contracts\ManipulatorAdapter;
6
use Nord\Lumen\ImageManager\Contracts\ImageManager as ImageManagerContract;
7
use Nord\Lumen\ImageManager\Exceptions\AdapterException;
8
9
class ImageManager implements ImageManagerContract
10
{
11
    const MANIPULATOR_CLOUDINARY = 'cloudinary';
12
    const DEFAULT_MANIPULATOR    = self::MANIPULATOR_CLOUDINARY;
13
14
    /**
15
     * @var FileManager
16
     */
17
    private $fileManager;
18
19
    /**
20
     * @var ManipulatorAdapter[]
21
     */
22
    private $adapters = [];
23
24
25
    /**
26
     * ImageManager constructor.
27
     *
28
     * @param FileManager $fileManager
29
     */
30
    public function __construct(FileManager $fileManager)
31
    {
32
        $this->fileManager = $fileManager;
33
    }
34
35
36
    /**
37
     * @inheritdoc
38
     */
39
    public function getImageUrl(File $file, array $options = [])
40
    {
41
        $path = $this->fileManager->getFilePath($file, $options);
42
43
        $manipulator = array_pull($options, 'manipulator', self::DEFAULT_MANIPULATOR);
44
45
        return $this->getManipulator($manipulator)->getImageUrl($path, $options);
46
    }
47
48
49
    /**
50
     * @param ManipulatorAdapter $manipulator
51
     */
52
    public function addAdapter(ManipulatorAdapter $manipulator)
53
    {
54
        $this->adapters[$manipulator->getName()] = $manipulator;
55
    }
56
57
58
    /**
59
     * @param string $name
60
     *
61
     * @return ManipulatorAdapter
62
     * @throws AdapterException
63
     */
64
    protected function getManipulator($name)
65
    {
66
        if (!isset($this->adapters[$name])) {
67
            throw new AdapterException("Adapter for manipulator '$name' not found.");
68
        }
69
70
        return $this->adapters[$name];
71
    }
72
}
73