ConfigHelper::addMainKeys()   A
last analyzed

Complexity

Conditions 6
Paths 32

Size

Total Lines 18
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 1
Metric Value
cc 6
eloc 11
nc 32
nop 1
dl 0
loc 18
rs 9.2222
c 1
b 0
f 1
1
<?php
2
namespace NeedleProject\LaravelRabbitMq;
3
4
/**
5
 * Class ConfigHelper
6
 *
7
 * @package NeedleProject\LaravelRabbitMq
8
 * @author  Adrian Tilita <[email protected]>
9
 */
10
class ConfigHelper
11
{
12
    const ROOT_KEY_CONNECTIONS = 'connections';
13
    const ROOT_KEY_QUEUES = 'queues';
14
    const ROOT_KEY_EXCHANGES = 'exchanges';
15
    const ROOT_KEY_PUBLISHERS = 'publishers';
16
    const ROOT_KEY_CONSUMERS = 'consumers';
17
18
    /**
19
     * @param array $config
20
     * @return array
21
     */
22
    public function addDefaults(array $config): array
23
    {
24
        $config = $this->addMainKeys($config);
25
        $config[static::ROOT_KEY_QUEUES] = $this->addAttributesOnEntities($config[static::ROOT_KEY_QUEUES]);
26
        $config[static::ROOT_KEY_EXCHANGES] = $this->addAttributesOnEntities($config[static::ROOT_KEY_EXCHANGES]);
27
        $config[static::ROOT_KEY_CONSUMERS] = $this->addPrefetchOnConsumers($config[static::ROOT_KEY_CONSUMERS]);
28
        return $config;
29
    }
30
31
    /**
32
     * Add root keys on config
33
     *
34
     * @param array $config
35
     * @return array
36
     */
37
    private function addMainKeys(array $config): array
38
    {
39
        if (!isset($config[static::ROOT_KEY_CONNECTIONS])) {
40
            $config[static::ROOT_KEY_CONNECTIONS] = [];
41
        }
42
        if (!isset($config[static::ROOT_KEY_EXCHANGES])) {
43
            $config[static::ROOT_KEY_EXCHANGES] = [];
44
        }
45
        if (!isset($config[static::ROOT_KEY_QUEUES])) {
46
            $config[static::ROOT_KEY_QUEUES] = [];
47
        }
48
        if (!isset($config[static::ROOT_KEY_PUBLISHERS])) {
49
            $config[static::ROOT_KEY_PUBLISHERS] = [];
50
        }
51
        if (!isset($config[static::ROOT_KEY_CONSUMERS])) {
52
            $config[static::ROOT_KEY_CONSUMERS] = [];
53
        }
54
        return $config;
55
    }
56
57
    /**
58
     * Add attributes entities (queues|exchanges)
59
     * @param array $entityConfig
60
     * @return array
61
     */
62
    private function addAttributesOnEntities(array $entityConfig): array
63
    {
64
        foreach ($entityConfig as $entityAliasName => $entityProperties) {
65
            if (isset($entityProperties['attributes'])) {
66
                continue;
67
            }
68
            $entityProperties['attributes'] = [];
69
            $entityConfig[$entityAliasName] = $entityProperties;
70
        }
71
        return $entityConfig;
72
    }
73
74
    /**
75
     * Add prefetch key on consumer config
76
     *
77
     * @param array $consumers
78
     * @return array
79
     */
80
    private function addPrefetchOnConsumers(array $consumers): array
81
    {
82
        foreach ($consumers as $consumerAliasName => $consumerDefinition) {
83
            if (!isset($consumerDefinition['prefetch_count'])) {
84
                $consumerDefinition['prefetch_count'] = 1;
85
            }
86
            if (!isset($consumerDefinition['global_prefetch'])) {
87
                $consumerDefinition['global_prefetch'] = true;
88
            }
89
            $consumers[$consumerAliasName] = $consumerDefinition;
90
        }
91
        return $consumers;
92
    }
93
}
94