Passed
Push — master ( 3ace16...18c4cb )
by Aleksandr
02:23
created

WiFi::linuxNetwork()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Sanchescom\WiFi;
6
7
use Exception;
8
use Sanchescom\WiFi\Exceptions\UnknownSystem;
9
use Sanchescom\WiFi\System\AbstractNetworksCollection;
10
use Sanchescom\WiFi\System\Linux\NetworksCollection as LinuxNetworks;
11
use Sanchescom\WiFi\System\Mac\NetworksCollection as MacNetworks;
12
use Sanchescom\WiFi\System\Windows\NetworksCollection as WindowsNetworks;
13
14
/**
15
 * Class WiFi.
16
 */
17
class WiFi
18
{
19
    /**
20
     * @var string
21
     */
22
    const OS_WIN = 'WIN';
23
24
    /**
25
     * @var string
26
     */
27
    const OS_LINUX = 'LINUX';
28
29
    /**
30
     * @var string
31
     */
32
    const OS_OSX = 'DAR';
33
34
    /**
35
     * @throws Exception
36
     *
37
     * @return AbstractNetworksCollection
38
     */
39
    public static function scan(): AbstractNetworksCollection
40
    {
41
        return (new static())->getSystemNetwork()->scan();
42
    }
43
44
    /**
45
     * Getting instance on network collections depended on operation system.
46
     *
47
     * @throws UnknownSystem
48
     *
49
     * @return AbstractNetworksCollection
50
     */
51
    protected function getSystemNetwork(): AbstractNetworksCollection
52
    {
53
        if ($this->isWindows()) {
54
            return $this->windowsNetwork();
55
        } elseif ($this->isMac()) {
56
            return $this->macNetwork();
57
        } elseif ($this->isLinux()) {
58
            return $this->linuxNetwork();
59
        } else {
60
            throw new UnknownSystem("Operation system doesn't support");
61
        }
62
    }
63
64
    /**
65
     * @return string
66
     */
67
    protected function isWindows()
68
    {
69
        return stristr(PHP_OS, self::OS_WIN);
70
    }
71
72
    /**
73
     * @return string
74
     */
75
    protected function isMac()
76
    {
77
        return stristr(PHP_OS, self::OS_OSX);
78
    }
79
80
    /**
81
     * @return string
82
     */
83
    protected function isLinux()
84
    {
85
        return stristr(PHP_OS, self::OS_LINUX);
86
    }
87
88
    /**
89
     * @return WindowsNetworks
90
     */
91
    protected function windowsNetwork(): AbstractNetworksCollection
92
    {
93
        return new WindowsNetworks();
94
    }
95
96
    /**
97
     * @return MacNetworks
98
     */
99
    protected function macNetwork(): AbstractNetworksCollection
100
    {
101
        return new MacNetworks();
102
    }
103
104
    /**
105
     * @return LinuxNetworks
106
     */
107
    protected function linuxNetwork(): AbstractNetworksCollection
108
    {
109
        return new LinuxNetworks();
110
    }
111
}
112