Networks::extractingDataFromString()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 7
dl 0
loc 13
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Sanchescom\WiFi\System\Linux;
6
7
use Sanchescom\WiFi\System\AbstractNetwork;
8
use Sanchescom\WiFi\System\AbstractNetworks;
9
10
/**
11
 * Class Networks.
12
 */
13
class Networks extends AbstractNetworks
14
{
15
    /**
16
     * @var int
17
     */
18
    const BSSID_KEY = 0;
19
20
    /**
21
     * @return string
22
     */
23
    protected function getCommand(): string
24
    {
25
        return 'LANG=C nmcli '
26
            .' --terse'
27
            .' --fields '
28
            .'active,ssid,bssid,'
29
            .'mode,chan,freq,'
30
            .'signal,security,wpa-flags,'
31
            .'rsn-flags'
32
            .' device'
33
            .' wifi'
34
            .' list';
35
    }
36
37
    /**
38
     * {@inheritdoc}
39
     */
40
    protected function getNetwork(): AbstractNetwork
41
    {
42
        return new Network($this->command);
43
    }
44
45
    /**
46
     * @param string $output
47
     *
48
     * @return array
49
     */
50
    public function extractingNetworks($output): array
51
    {
52
        $availableNetworks = $this->explodeAvailableNetworks($output);
53
54
        array_walk($availableNetworks, function (&$networkData) {
55
            $networkData = $this->extractingDataFromString($networkData);
56
        });
57
58
        return $availableNetworks;
59
    }
60
61
    /**
62
     * @param string $networkData
63
     *
64
     * @return array
65
     */
66
    protected function extractingDataFromString($networkData): array
67
    {
68
        $extractedProperties = [];
69
70
        preg_match_all(
71
            '/(.*):(.*):(\w{2}\:\w{2}\:\w{2}\:\w{2}\:\w{2}:\w{2}):(.*):(.*):(.*):(.*):(.*):(.*):(.*)/',
72
            str_replace('\\:', ':', $networkData),
73
            $extractedProperties
74
        );
75
76
        array_shift($extractedProperties);
77
78
        return trim_first($extractedProperties);
79
    }
80
}
81