ConfigHelper::addDefaults()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Importance

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