Passed
Push — master ( af560c...690258 )
by Sébastien
03:19
created

ConfigProvider   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 69
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 21
dl 0
loc 69
rs 10
c 0
b 0
f 0
wmc 5

5 Methods

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