@@ -25,12 +25,51 @@ def to_json(self):
25
25
'wwan' : self .wwan
26
26
}
27
27
28
+ # case 1:
29
+ # STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN METERED
30
+ # connected full enabled enabled missing enabled no (guessed)
31
+ #
32
+ # case 2:
33
+ # unknown none enabled enabled enabled disabled
34
+ #
35
+ # case 3:
36
+ # connected (local only) full disabled enabled enabled enabled
37
+ #
38
+ # see: https://regex101.com/r/zW1hHE/1
39
+
28
40
@classmethod
29
41
def parse (cls , text : str ) -> General :
30
- m = re .search (
31
- r'^([\S\s]+)\s{2}(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s*' , text )
42
+ #pattern = r'^([\S\s]+)\s{2}(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s*'
43
+
44
+ state_r = r'(?P<state>.+)'
45
+ connectivity_r = r'(?P<connectivity>\S+)'
46
+ wifi_hw_r = r'(?P<wifi_hw>\S+)'
47
+ wifi_r = r'(?P<wifi>\S+)'
48
+ wwan_hw_r = r'(?P<wwan_hw>\S+)'
49
+ wwan_r = r'(?P<wwan>\S+)'
50
+ metered_r = r'(?: (?P<metered>.+)?)?'
51
+
52
+ pattern = (
53
+ r'^'
54
+ + state_r
55
+ + r' '
56
+ + connectivity_r
57
+ + r'\s+'
58
+ + wifi_hw_r
59
+ + r' '
60
+ + wifi_r
61
+ + r' '
62
+ + wwan_hw_r
63
+ + r' '
64
+ + wwan_r
65
+ + metered_r
66
+ + r'$'
67
+ )
68
+
69
+ m = re .search (pattern , text )
70
+
32
71
if m :
33
- state , connectivity , wifi_hw , wifi , wwan_hw , wwan = m .groups ()
72
+ state , connectivity , wifi_hw , wifi , wwan_hw , wwan , _metered = m .groups ()
34
73
return General (NetworkManagerState (state ),
35
74
NetworkConnectivity (connectivity ),
36
75
wifi_hw == 'enabled' ,
0 commit comments