Passed
Push — master ( 217445...1d2662 )
by Tilita
01:38 queued 11s
created

ConfigHelper::addDefaults()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 8
ccs 6
cts 6
cp 1
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
crap 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 3
    public function addDefaults(array $config): array
23
    {
24 3
        $config = $this->addMainKeys($config);
0 ignored issues
show
Coding Style introduced by
Consider using a different name than the parameter $config. This often makes code more readable.
Loading history...
25 3
        $config[static::ROOT_KEY_QUEUES] = $this->addAttributesOnEntities($config[static::ROOT_KEY_QUEUES]);
26 3
        $config[static::ROOT_KEY_EXCHANGES] = $this->addAttributesOnEntities($config[static::ROOT_KEY_EXCHANGES]);
27 3
        $config[static::ROOT_KEY_CONSUMERS] = $this->addPrefetchOnConsumers($config[static::ROOT_KEY_CONSUMERS]);
28 3
        return $config;
29
    }
30
31
    /**
32
     * Add root keys on config
33
     *
34
     * @param array $config
35
     * @return array
36
     */
37 3
    private function addMainKeys(array $config): array
38
    {
39 3
        if (!isset($config[static::ROOT_KEY_CONNECTIONS])) {
40 1
            $config[static::ROOT_KEY_CONNECTIONS] = [];
41
        }
42 3
        if (!isset($config[static::ROOT_KEY_EXCHANGES])) {
43 3
            $config[static::ROOT_KEY_EXCHANGES] = [];
44
        }
45 3
        if (!isset($config[static::ROOT_KEY_QUEUES])) {
46 1
            $config[static::ROOT_KEY_QUEUES] = [];
47
        }
48 3
        if (!isset($config[static::ROOT_KEY_PUBLISHERS])) {
49 3
            $config[static::ROOT_KEY_PUBLISHERS] = [];
50
        }
51 3
        if (!isset($config[static::ROOT_KEY_CONSUMERS])) {
52 2
            $config[static::ROOT_KEY_CONSUMERS] = [];
53
        }
54 3
        return $config;
55
    }
56
57
    /**
58
     * Add attributes entities (queues|exchanges)
59
     * @param array $entityConfig
60
     * @return array
61
     */
62 3
    private function addAttributesOnEntities(array $entityConfig): array
63
    {
64 3
        foreach ($entityConfig as $entityAliasName => $entityProperties) {
65 2
            if (isset($entityProperties['attributes'])) {
66
                continue;
67
            }
68 2
            $entityProperties['attributes'] = [];
69 2
            $entityConfig[$entityAliasName] = $entityProperties;
70
        }
71 3
        return $entityConfig;
72
    }
73
74
    /**
75
     * Add prefetch key on consumer config
76
     *
77
     * @param array $consumers
78
     * @return array
79
     */
80 3
    private function addPrefetchOnConsumers(array $consumers): array
81
    {
82 3
        foreach ($consumers as $consumerAliasName => $consumerDefinition)
83
        {
84 1
            if (isset($consumerDefinition['prefetch_count'])) {
85
                continue;
86
            }
87 1
            $consumerDefinition['prefetch_count'] = 1;
88 1
            $consumers[$consumerAliasName] = $consumerDefinition;
89
        }
90 3
        return $consumers;
91
    }
92
}
93