ServerMonitorFactory   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 35
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 0
Metric Value
dl 0
loc 35
rs 10
c 0
b 0
f 0
wmc 4
lcom 0
cbo 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A createForMonitorConfig() 0 27 4
1
<?php
2
3
namespace EricMakesStuff\ServerMonitor\Monitors;
4
5
use EricMakesStuff\ServerMonitor\Exceptions\InvalidConfiguration;
6
7
class ServerMonitorFactory
8
{
9
    /**
10
     * @param array $monitorConfiguration
11
     * @param array $filter
12
     * @return mixed
13
     */
14
    public static function createForMonitorConfig(array $monitorConfiguration, array $filter = [])
15
    {
16
        $monitors = collect($monitorConfiguration);
17
18
        if (count($filter) && !empty($filter[0])) {
19
            $monitors = $monitors->only($filter);
20
        }
21
22
        $configured_monitors = collect();
23
24
        $monitors->map(function($monitorConfigs, $monitorName) {
25
            if (file_exists(__DIR__.'/'.ucfirst($monitorName).'Monitor.php')) {
26
                $className = '\\EricMakesStuff\\ServerMonitor\\Monitors\\'.ucfirst($monitorName).'Monitor';
27
                return collect($monitorConfigs)->map(function($monitorConfig) use ($className) {
28
                    return new $className($monitorConfig);
29
                });
30
            }
31
32
            throw InvalidConfiguration::cannotFindMonitor($monitorName);
33
        })->each(function($monitor_group) use ($configured_monitors) {
34
            $monitor_group->each(function($monitor) use ($configured_monitors) {
35
                $configured_monitors->push($monitor);
36
            });
37
        });
38
39
        return $configured_monitors;
40
    }
41
}
42