DeepzoomFactory::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 2
b 0
f 0
nc 1
nop 1
dl 0
loc 3
rs 10
1
<?php
2
3
namespace Jeremytubbs\Deepzoom;
4
5
use Intervention\Image\ImageManager;
6
use InvalidArgumentException;
7
use League\Flysystem\Filesystem;
8
use League\Flysystem\Local\LocalFilesystemAdapter;
9
10
/**
11
 * Class DeepzoomFactory
12
 * @package Jeremytubbs\Deepzoom
13
 */
14
class DeepzoomFactory
15
{
16
    /**
17
     * @var array
18
     */
19
    protected $config;
20
21
    /**
22
     * @param array $config
23
     */
24
    public function __construct(array $config = [])
25
    {
26
        $this->config = $config;
27
    }
28
29
    /**
30
     * @return Deepzoom
31
     */
32
    public function getDeepzoom()
33
    {
34
        $deepzoom = new Deepzoom(
35
            $this->getFilesystem(),
36
            $this->getImageManager(),
37
            $this->getTileFormat(),
38
            $this->getPathPrefix()
39
        );
40
41
        return $deepzoom;
42
    }
43
44
    /**
45
     * @return Filesystem|void
46
     */
47
    public function getFilesystem()
48
    {
49
        if (! isset($this->config['path'])) {
50
            throw new InvalidArgumentException('A "source" file system must be set.');
51
        }
52
53
        if (is_string($this->config['path'])) {
54
            return new Filesystem(
55
                new LocalFilesystemAdapter($this->config['path'])
56
            );
57
        }
58
    }
59
60
    /**
61
     * @return ImageManager
62
     */
63
    public function getImageManager()
64
    {
65
        $driver = 'gd';
66
67
        if (isset($this->config['driver'])) {
68
            $driver = $this->config['driver'];
69
        }
70
71
        return new ImageManager([
72
            'driver' => $driver,
73
        ]);
74
    }
75
76
    public function getTileFormat()
77
    {
78
        $tileFormat = 'jpg';
79
80
        if (isset($this->config['format'])) {
81
            $tileFormat = $this->config['format'];
82
        }
83
84
        return $tileFormat;
85
    }
86
87
    public function getPathPrefix()
88
    {
89
        if (isset($this->config['path'])) {
90
            $pathPrefix = $this->config['path'];
91
        }
92
93
        return $pathPrefix;
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable $pathPrefix does not seem to be defined for all execution paths leading up to this point.
Loading history...
94
    }
95
96
    /**
97
     * @param array $config
98
     * @return Deepzoom
99
     */
100
    public static function create(array $config = [])
101
    {
102
        return (new self($config))->getDeepzoom();
103
    }
104
}
105