Passed
Push — master ( 84c74c...b6b7d0 )
by Petr
02:19
created

Factory::getLibrary()   B

Complexity

Conditions 7
Paths 5

Size

Total Lines 20
Code Lines 17

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 16
CRAP Score 7

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 7
eloc 17
c 1
b 0
f 0
nc 5
nop 1
dl 0
loc 20
ccs 16
cts 16
cp 1
crap 7
rs 8.8333
1
<?php
2
3
namespace kalanis\kw_mime\Check;
4
5
6
use kalanis\kw_files\Interfaces\IProcessFiles;
7
use kalanis\kw_mime\Interfaces\IMime;
8
use kalanis\kw_mime\Interfaces\IMiTranslations;
9
use kalanis\kw_storage\Storage;
10
11
12
/**
13
 * Class Factory
14
 * @package kalanis\kw_mime\Check
15
 * Which library will run?
16
 */
17
class Factory
18
{
19
    use Traits\TCheckCalls;
20
21
    /** @var IMiTranslations|null */
22
    protected $lang = null;
23
24 7
    public function __construct(?IMiTranslations $lang = null)
25
    {
26 7
        $this->lang = $lang;
27 7
    }
28
29
    /**
30
     * @param IProcessFiles|Storage|string $source
31
     * @return IMime
32
     */
33 7
    public function getLibrary($source): IMime
34
    {
35 7
        if ($this->isMimeFunction()) {
36 6
            if (is_object($source) && ($source instanceof IProcessFiles)) {
37 1
                $lib = new DataFiles(null, $this->lang);
38 1
                $lib->canUse($source);
39 1
                return $lib;
40 5
            } elseif (is_object($source) && ($source instanceof Storage)) {
41 1
                $lib = new DataStorage($this->lang);
42 1
                $lib->canUse($source);
43 1
                return $lib;
44 4
            } elseif (is_string($source)) {
45 1
                $lib = new LocalVolume1($this->lang);
46 1
                $lib->canUse($source);
47 1
                return $lib;
48
            } else {
49 3
                return new CustomList();
50
            }
51
        } else {
52 1
            return new CustomList();
53
        }
54
    }
55
}
56