ConfigHelper   A
last analyzed

Complexity

Total Complexity 14

Size/Duplication

Total Lines 82
Duplicated Lines 0 %

Test Coverage

Coverage 93.75%

Importance

Changes 1
Bugs 0 Features 1
Metric Value
eloc 35
c 1
b 0
f 1
dl 0
loc 82
ccs 30
cts 32
cp 0.9375
rs 10
wmc 14

4 Methods

Rating   Name   Duplication   Size   Complexity  
A addDefaults() 0 7 1
A addMainKeys() 0 18 6
A addAttributesOnEntities() 0 10 3
A addPrefetchOnConsumers() 0 12 4
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);
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
            if (!isset($consumerDefinition['prefetch_count'])) {
84 1
                $consumerDefinition['prefetch_count'] = 1;
85
            }
86
            if (!isset($consumerDefinition['global_prefetch'])) {
87 1
                $consumerDefinition['global_prefetch'] = true;
88 1
            }
89
            $consumers[$consumerAliasName] = $consumerDefinition;
90 3
        }
91
        return $consumers;
92
    }
93
}
94