Passed
Push — master ( 2ddebf...84c74c )
by Petr
09:17 queued 01:35
created

ResourceFiles   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 37
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 21
c 1
b 0
f 0
dl 0
loc 37
ccs 19
cts 19
cp 1
rs 10
wmc 7

3 Methods

Rating   Name   Duplication   Size   Complexity  
A canUse() 0 10 4
A __construct() 0 5 1
A getMime() 0 9 2
1
<?php
2
3
namespace kalanis\kw_mime\Check;
4
5
6
use kalanis\kw_files\FilesException;
7
use kalanis\kw_files\Interfaces\IFLTranslations;
8
use kalanis\kw_files\Interfaces\IProcessFiles;
9
use kalanis\kw_files\Traits\TFile;
10
use kalanis\kw_mime\Interfaces\IMimeChecks;
11
use kalanis\kw_mime\Interfaces\IMiTranslations;
12
use kalanis\kw_mime\MimeException;
13
use kalanis\kw_paths\ArrayPath;
14
use kalanis\kw_paths\PathsException;
15
use kalanis\kw_paths\Stuff;
16
17
18
/**
19
 * Class ResourceFiles
20
 * @package kalanis\kw_mime\Check
21
 * System library to detect the mime type by files processor - pass as resource
22
 */
23
class ResourceFiles implements IMimeChecks
24
{
25
    use Traits\TResult;
26
    use Traits\TToResource;
27
    use TFile;
28
29
    /** @var ArrayPath */
30
    protected $pathLib = null;
31
32 5
    public function __construct(?IFLTranslations $flLang = null, ?IMiTranslations $miLang = null)
33
    {
34 5
        $this->setLang($flLang);
35 5
        $this->setMiLang($miLang);
36 5
        $this->pathLib = new ArrayPath();
37 5
    }
38
39 4
    public function canUse($source): bool
40
    {
41 4
        if (!$this->isMimeFunction()) {
42 1
            return false;
43
        }
44 3
        if (is_object($source) && ($source instanceof IProcessFiles)) {
45 2
            $this->setProcessFile($source);
46 2
            return true;
47
        }
48 1
        return false;
49
    }
50
51 3
    public function getMime(array $path): string
52
    {
53 3
        $this->checkMimeFunction();
54
        try {
55 3
            $content = $this->getProcessFile()->readFile($path);
56 2
            $resource = $this->readSourceToResource(Stuff::arrayToPath($path), $content);
57 2
            return $this->determineResult(mime_content_type($resource));
0 ignored issues
show
Bug introduced by
$resource of type resource is incompatible with the type string expected by parameter $filename of mime_content_type(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

57
            return $this->determineResult(mime_content_type(/** @scrutinizer ignore-type */ $resource));
Loading history...
58 1
        } catch (FilesException | PathsException $ex) {
59 1
            throw new MimeException($ex->getMessage(), $ex->getCode(), $ex);
60
        }
61
    }
62
}
63