Completed
Push — master ( 5c2862...82826e )
by Sébastien
04:28
created

ConfigProvider::getFactories()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 11
ccs 2
cts 2
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
crap 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Soluble\MediaTools\Config;
6
7
use Soluble\MediaTools\Video\ConversionServiceFactory;
8
use Soluble\MediaTools\Video\ConversionServiceInterface;
9
use Soluble\MediaTools\Video\DetectionServiceFactory;
10
use Soluble\MediaTools\Video\DetectionServiceInterface;
11
use Soluble\MediaTools\Video\InfoServiceFactory;
12
use Soluble\MediaTools\Video\InfoServiceInterface;
13
use Soluble\MediaTools\Video\ThumbServiceFactory;
14
use Soluble\MediaTools\Video\ThumbServiceInterface;
15
use Soluble\MediaTools\VideoConversionService;
16
use Soluble\MediaTools\VideoDetectionService;
17
use Soluble\MediaTools\VideoInfoService;
18
use Soluble\MediaTools\VideoThumbService;
19
20
class ConfigProvider
21
{
22
    /**
23
     * @return array<string, array<string,array<string,mixed>>>
24
     */
25 1
    public function __invoke(): array
26
    {
27
        return [
28
            'services' => [
29 1
                'config' => $this->getDefaultConfiguration(),
30
            ],
31 1
            'dependencies' => $this->getDependencies()
32
        ];
33
    }
34
35
    /**
36
     * @return array<string, array<string,string>>
37
     */
38 12
    public function getDependencies(): array
39
    {
40
        return [
41 12
            'aliases' => $this->getAliases(),
42 12
            'factories' => $this->getFactories()
43
        ];
44
    }
45
46
    /**
47
     * Return concrete implementation aliases if needed
48
     *
49
     * @return array<string, string>
50
     */
51 12
    public function getAliases(): array {
52
53
        return [
54
            // Configuration holders
55 12
            FFMpegConfig::class           => FFMpegConfigInterface::class,
56
            FFProbeConfig::class          => FFProbeConfigInterface::class,
57
58
            // Services
59
            VideoConversionService::class => ConversionServiceInterface::class,
60
            VideoInfoService::class       => InfoServiceInterface::class,
61
            VideoDetectionService::class  => DetectionServiceInterface::class,
62
            VideoThumbService::class      => ThumbServiceInterface::class,
63
        ];
64
    }
65
66
    /**
67
     * Return interface based factories
68
     *
69
     * @return array<string, string>
70
     */
71 12
    public function getFactories(): array {
72
        return [
73
            // Configuration holders
74 12
            FFMpegConfigInterface::class   => FFMpegConfigFactory::class,
75
            FFProbeConfigInterface::class  => FFProbeConfigFactory::class,
76
77
            // Services classes
78
            ConversionServiceInterface::class => ConversionServiceFactory::class,
79
            InfoServiceInterface::class       => InfoServiceFactory::class,
80
            DetectionServiceInterface::class  => DetectionServiceFactory::class,
81
            ThumbServiceInterface::class      => ThumbServiceFactory::class,
82
        ];
83
    }
84
85
    /**
86
     * @return array<string, array<string,mixed>>
87
     */
88 2
    public function getDefaultConfiguration(): array
89
    {
90 2
        return require dirname(__DIR__, 2) . '/config/soluble-mediatools.global.php';
91
    }
92
}
93