Test Failed
Pull Request — master (#660)
by butschster
09:30
created

BroadcastingBootloader::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 3
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Spiral\Broadcasting\Bootloader;
6
7
use Spiral\Boot\Bootloader\Bootloader;
8
use Spiral\Boot\EnvironmentInterface;
9
use Spiral\Broadcasting\BroadcastInterface;
10
use Spiral\Broadcasting\BroadcastManager;
11
use Spiral\Broadcasting\BroadcastManagerInterface;
12
use Spiral\Broadcasting\Config\BroadcastConfig;
13
use Spiral\Broadcasting\Driver\LogBroadcast;
14
use Spiral\Broadcasting\Driver\NullBroadcast;
15
use Spiral\Broadcasting\GuardInterface;
16
use Spiral\Config\ConfiguratorInterface;
17
use Spiral\Config\Patch\Append;
18
19
final class BroadcastingBootloader extends Bootloader
20
{
21
    protected const SINGLETONS = [
22
        BroadcastManagerInterface::class => BroadcastManager::class,
23
        GuardInterface::class => BroadcastInterface::class,
24
        BroadcastInterface::class => [self::class, 'initDefaultBroadcast'],
25
    ];
26
27
    private ConfiguratorInterface $config;
28
29
    public function __construct(ConfiguratorInterface $config)
30
    {
31
        $this->config = $config;
32
    }
33
34
    public function registerDriverAlias(string $driverClass, string $alias): void
35
    {
36
        $this->config->modify(
37
            BroadcastConfig::CONFIG,
38
            new Append('driverAliases', $alias, $driverClass)
39
        );
40
    }
41
42
    public function boot(EnvironmentInterface $env): void
43
    {
44
        $this->initConfig($env);
45
    }
46
47
    private function initDefaultBroadcast(BroadcastManagerInterface $manager): BroadcastInterface
48
    {
49
        return $manager->connection();
50
    }
51
52
    private function initConfig(EnvironmentInterface $env): void
53
    {
54
        $this->config->setDefaults(
55
            BroadcastConfig::CONFIG,
56
            [
57
                'default' => $env->get('BROADCAST_CONNECTION', 'null'),
58
                'authorize' => [
59
                    'path' => $env->get('BROADCAST_AUTHORIZE_PATH'),
60
                    'topics' => [],
61
                ],
62
                'aliases' => [],
63
                'connections' => [
64
                    'null' => [
65
                        'driver' => 'null',
66
                    ],
67
                ],
68
                'driverAliases' => [
69
                    'null' => NullBroadcast::class,
70
                    'log' => LogBroadcast::class,
71
                ],
72
            ]
73
        );
74
    }
75
}
76