Class: WifiWand::Platforms::Mac::NetworkIdentityReader
- Inherits:
-
Object
- Object
- WifiWand::Platforms::Mac::NetworkIdentityReader
show all
- Includes:
- ConnectedNetworkFlagContext
- Defined in:
- lib/wifi_wand/platforms/mac/network_identity_reader.rb
Constant Summary
collapse
- NO_CONNECTED_NETWORK =
Object.new.freeze
ConnectedNetworkFlagContext::FLAG_CONTEXTS_KEY
Instance Method Summary
collapse
Constructor Details
#initialize(helper_client_provider:, command_runner:, system_profiler_wifi_data_reader:, system_profiler_wifi_data_cache_runner:, wifi_power_reader:, wifi_interface_provider:, default_interface_provider:, ipv4_addresses_reader:, ipv6_addresses_reader:) ⇒ NetworkIdentityReader
Returns a new instance of NetworkIdentityReader.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
# File 'lib/wifi_wand/platforms/mac/network_identity_reader.rb', line 18
def initialize(
helper_client_provider:,
command_runner:,
system_profiler_wifi_data_reader:,
system_profiler_wifi_data_cache_runner:,
wifi_power_reader:,
wifi_interface_provider:,
default_interface_provider:,
ipv4_addresses_reader:,
ipv6_addresses_reader:
)
@helper_client_provider = helper_client_provider
@command_runner = command_runner
@system_profiler_wifi_data_reader = system_profiler_wifi_data_reader
@system_profiler_wifi_data_cache_runner = system_profiler_wifi_data_cache_runner
@wifi_power_reader = wifi_power_reader
@wifi_interface_provider = wifi_interface_provider
@default_interface_provider = default_interface_provider
@ipv4_addresses_reader = ipv4_addresses_reader
@ipv6_addresses_reader = ipv6_addresses_reader
end
|
Instance Method Details
#associated? ⇒ Boolean
40
41
42
43
44
45
46
47
48
49
50
51
52
|
# File 'lib/wifi_wand/platforms/mac/network_identity_reader.rb', line 40
def associated?
with_system_profiler_wifi_data_cache_scope do
return false unless wifi_on?
result = helper_client.connected_network_name
return true if result.payload && !placeholder_network_name?(result.payload)
return false if result.not_connected?
interface_associated_in_system_profiler_wifi_data?(system_profiler_wifi_interface_data)
end
rescue WifiWand::Error
false
end
|
#connected? ⇒ Boolean
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
# File 'lib/wifi_wand/platforms/mac/network_identity_reader.rb', line 54
def connected?
with_system_profiler_wifi_data_cache_scope do
return false unless wifi_on?
result = helper_client.connected_network_name
return true if result.payload && !placeholder_network_name?(result.payload)
return false if result.not_connected?
interface_data = system_profiler_wifi_interface_data
return true if interface_associated_in_system_profiler_wifi_data?(interface_data)
associated_without_ssid?
end
end
|
#connected_network_name ⇒ Object
Callers reach this only through Mac::Model#_connected_network_name, which
BaseModel#connected_network_name already guards with a wifi_on? check.
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
# File 'lib/wifi_wand/platforms/mac/network_identity_reader.rb', line 71
def connected_network_name
with_connected_network_flag_scope do
with_system_profiler_wifi_data_cache_scope do
network_name = connected_network_name_raw
return network_name if network_name
return nil if connected_network_authoritatively_disconnected?
if connected? && network_identity_redacted?
raise MacOsRedactionError.new(
operation_description: 'Current WiFi network queries',
reason: network_identity_redaction_reason
)
end
nil
end
end
end
|
#connected_network_name_raw ⇒ Object
90
91
92
93
94
95
|
# File 'lib/wifi_wand/platforms/mac/network_identity_reader.rb', line 90
def connected_network_name_raw
network_name = connected_network_name_candidate
return mark_connected_network_authoritatively_disconnected if no_connected_network?(network_name)
network_name
end
|
#network_identity_redacted? ⇒ Boolean
124
125
126
127
128
129
130
131
132
133
134
135
|
# File 'lib/wifi_wand/platforms/mac/network_identity_reader.rb', line 124
def network_identity_redacted?
return true if connected_network_fallback_identity_redacted?
with_system_profiler_wifi_data_cache_scope do
result = helper_client.connected_network_name
result.location_services_error? ||
helper_placeholder_network_name?(result.payload) ||
fallback_network_identity_missing?
end
rescue WifiWand::Error
false
end
|
#network_identity_redaction_reason ⇒ Object
137
138
139
140
141
142
|
# File 'lib/wifi_wand/platforms/mac/network_identity_reader.rb', line 137
def network_identity_redaction_reason
return nil unless network_identity_redacted?
'macOS is redacting WiFi network names until Location Services access is granted ' \
'to wifiwand-helper, the macOS helper application'
end
|