Completed
Push — master ( 825767...a283c3 )
by Olivier
02:15
created

AbstractManager   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 54
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Test Coverage

Coverage 87.1%

Importance

Changes 3
Bugs 1 Features 2
Metric Value
wmc 13
c 3
b 1
f 2
lcom 0
cbo 2
dl 0
loc 54
rs 10
ccs 27
cts 31
cp 0.871

3 Methods

Rating   Name   Duplication   Size   Complexity  
A handleNotFoundException() 0 6 2
A isUpToDate() 0 17 3
B array_diff_assoc_recursive() 0 17 8
1
<?php
2
3
namespace Ola\RabbitMqAdminToolkitBundle\Manager;
4
5
use Guzzle\Http\Exception\ClientErrorResponseException;
6
7
abstract class AbstractManager
8
{
9
    /**
10
     * @param ClientErrorResponseException $e
11
     */
12 8
    protected function handleNotFoundException(ClientErrorResponseException $e)
13
    {
14 8
        if ($e->getResponse()->getStatusCode() !== 404) {
15 1
            throw $e;
16
        }
17 7
    }
18
19
    /**
20
     * @param $configuration
21
     * @param $remoteConfiguration
22
     *
23
     * @return bool
24
     */
25 3
    protected function isUpToDate($configuration, $remoteConfiguration)
26
    {
27 3
        $diff = $this->array_diff_assoc_recursive($configuration, $remoteConfiguration);
28
29 3
        foreach ($remoteConfiguration as $k => $v) {
30 3
            if (!isset($configuration[$k])) {
31
                unset($remoteConfiguration[$k]);
32
            }
33 3
        }
34
35 3
        $diff = array_merge_recursive(
36 3
            $diff,
37 3
            $this->array_diff_assoc_recursive($remoteConfiguration, $configuration)
38 3
        );
39
40 3
        return empty($diff);
41
    }
42
43 3
    private function array_diff_assoc_recursive($array1, $array2) {
44 3
        $difference = array();
45 3
        foreach ($array1 as $key => $value) {
46 3
            if (is_array($value)) {
47 1
                if (!isset($array2[$key]) || !is_array($array2[$key])) {
48
                    $difference[$key] = $value;
49
                } else {
50 1
                    $new_diff = $this->array_diff_assoc_recursive($value, $array2[$key]);
51 1
                    if (!empty($new_diff))
52 1
                        $difference[$key] = $new_diff;
53
                }
54 3
            } else if (!array_key_exists($key, $array2) || $array2[$key] !== $value) {
55 3
                $difference[$key] = $value;
56 3
            }
57 3
        }
58 3
        return $difference;
59
    }
60
}
61