ImageService   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 51
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 0%

Importance

Changes 2
Bugs 1 Features 0
Metric Value
wmc 6
c 2
b 1
f 0
lcom 1
cbo 4
dl 0
loc 51
ccs 0
cts 24
cp 0
rs 10

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
B generateImage() 0 21 5
1
<?php
2
3
namespace SvImages\Service;
4
5
use SvImages\Filesystem\Filesystem;
6
use SvImages\Transformer\TransformersManager;
7
use SvImages\Parser\Result as ParserResult;
8
9
/**
10
 * @author Vytautas Stankus <[email protected]>
11
 * @license MIT
12
 */
13
class ImageService
14
{
15
    /**
16
     * @var Filesystem
17
     */
18
    protected $filesystem;
19
20
    /**
21
     * @var TransformersManager
22
     */
23
    protected $transformersManager;
24
25
    /**
26
     * @param Filesystem          $fileSystem
27
     * @param TransformersManager $transformersManager
28
     */
29
    public function __construct(
30
        Filesystem $fileSystem,
31
        TransformersManager $transformersManager
32
    ) {
33
        $this->filesystem          = $fileSystem;
34
        $this->transformersManager = $transformersManager;
35
    }
36
37
    /**
38
     * @param \SvImages\Parser\Result $parserResult
39
     *
40
     * @return false|string
41
     */
42
    public function generateImage(ParserResult $parserResult)
43
    {
44
        $path = $parserResult->getFilePath();
45
46
        $contents = $this->filesystem->read($path);
47
        if (false === $contents) {
48
            return false;
49
        }
50
51
        $transformers = $parserResult->getTransformers();
52
53
        foreach ($transformers as $item) {
54
            $transformer = $this->transformersManager->get($item['type']);
55
            if (!empty($item['defaults']) && is_array($item['defaults'])) {
56
                $transformer->setDefaults($item['defaults']);
57
            }
58
            $contents = $transformer->apply($contents, $item['options']);
59
        }
60
61
        return $contents;
62
    }
63
}
64