hive-runner-ios 1.1.7 → 1.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/hive/controller/ios.rb +120 -63
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d50b94f4a51da9e915016b1a89b30b5a18a0ccec
|
4
|
+
data.tar.gz: 526308c5066d0a1f810479e68ab2bf827fe39fd7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 93fb4be5a060c2dbe2810fd320d584b87e3dceb1cb563433af2593ff7d085c77e24e6cdbb4d612475bb591a5102be583008aa463977d389ef351cfd5f87edfc0
|
7
|
+
data.tar.gz: ed389aa7b9b7c78ce2130af1bf2b0e722b83e93d7e2ea6a9969f06da9d115e47042651ad5d7639e1dbf8690d216368e4d86492bd18715d2f062c521b7344b898
|
data/README.md
CHANGED
data/lib/hive/controller/ios.rb
CHANGED
@@ -7,89 +7,146 @@ module Hive
|
|
7
7
|
class Ios < Controller
|
8
8
|
|
9
9
|
def detect
|
10
|
-
|
11
|
-
|
10
|
+
if Hive.hive_mind.device_details.has_key? :error
|
11
|
+
detect_without_hivemind
|
12
|
+
else
|
13
|
+
detect_with_hivemind
|
14
|
+
end
|
15
|
+
end
|
12
16
|
|
13
|
-
|
17
|
+
def detect_with_hivemind
|
18
|
+
connected_devices = get_connected_devices
|
19
|
+
Hive.logger.debug('No devices attached') if connected_devices.empty?
|
20
|
+
|
21
|
+
# Selecting only ios mobiles
|
22
|
+
hivemind_devices = get_hivemind_devices
|
23
|
+
to_poll = []
|
24
|
+
attached_devices = []
|
25
|
+
|
26
|
+
hivemind_devices.each do |device|
|
27
|
+
Hive.logger.debug("Device details: #{device.inspect}")
|
14
28
|
begin
|
15
|
-
|
16
|
-
rescue
|
17
|
-
|
18
|
-
raise Hive::Controller::DeviceDetectionFailed
|
29
|
+
registered_device = connected_devices.select { |a| a.serial == device['serial'] && a.trusted? }
|
30
|
+
rescue => e
|
31
|
+
registered_device = []
|
19
32
|
end
|
20
33
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
Hive.logger.debug("
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
34
|
+
if registered_device.empty?
|
35
|
+
# A previously registered device isn't attached
|
36
|
+
Hive.logger.debug("A previously registered device has disappeared: #{device}")
|
37
|
+
else
|
38
|
+
# A previously registered device is attached, poll it
|
39
|
+
Hive.logger.debug("Setting #{device['name']} to be polled")
|
40
|
+
Hive.logger.debug("Device: #{registered_device.inspect}")
|
41
|
+
begin
|
42
|
+
Hive.logger.debug("#{device['name']} OS version: #{registered_device[0].version}")
|
43
|
+
# Check OS version and update if necessary
|
44
|
+
if device['operating_system_version'] != registered_device[0].version
|
45
|
+
Hive.logger.info("Updating OS version of #{device['name']} from #{device['operating_system_version']} to #{registered_device[0].version}")
|
46
|
+
Hive.hive_mind.register(
|
47
|
+
id: device['id'],
|
48
|
+
operating_system_name: 'android',
|
49
|
+
operating_system_version: registered_device[0].version
|
35
50
|
)
|
36
|
-
to_poll << device['id']
|
37
|
-
rescue => e
|
38
|
-
Hive.logger.warn("Error with connected device: #{e.message}")
|
39
51
|
end
|
40
|
-
|
41
|
-
|
52
|
+
attached_devices << self.create_device(device.merge(
|
53
|
+
'os_version' => registered_device[0].version,
|
54
|
+
'device_range' => registered_device[0].device_class
|
55
|
+
)
|
56
|
+
)
|
57
|
+
to_poll << device['id']
|
58
|
+
rescue DeviceAPI::DeviceNotFound => e
|
59
|
+
Hive.logger.warn("Device disconnected before registration (serial: #{device['serial']})")
|
60
|
+
rescue => e
|
61
|
+
Hive.logger.warn("Error with connected device: #{e.message}")
|
42
62
|
end
|
63
|
+
|
64
|
+
connected_devices = connected_devices - registered_device
|
43
65
|
end
|
66
|
+
end
|
44
67
|
|
45
|
-
|
68
|
+
# Poll already registered devices
|
69
|
+
Hive.logger.debug("Polling: #{to_poll}")
|
46
70
|
Hive.hive_mind.poll(*to_poll)
|
47
71
|
|
48
|
-
|
72
|
+
# Register new devices
|
73
|
+
if !connected_devices.empty?
|
49
74
|
begin
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
75
|
+
connected_devices.select{|a| a.trusted? }.each do |device|
|
76
|
+
begin
|
77
|
+
dev = Hive.hive_mind.register(
|
78
|
+
hostname: device.model,
|
79
|
+
serial: device.serial,
|
80
|
+
macs: [device.wifi_mac_address],
|
81
|
+
brand: 'Apple',
|
82
|
+
model: device.model,
|
83
|
+
device_type: 'Mobile',
|
84
|
+
imei: device.imei,
|
85
|
+
operating_system_name: 'ios',
|
86
|
+
operating_system_version: device.version
|
87
|
+
)
|
88
|
+
Hive.hive_mind.connect(dev['id'])
|
89
|
+
Hive.logger.info("Device registered: #{dev}")
|
90
|
+
rescue DeviceAPI::DeviceNotFound => e
|
91
|
+
Hive.logger.warn("Device disconnected before registration #{e.message}")
|
92
|
+
rescue => e
|
93
|
+
Hive.logger.warn("Error with connected device: #{e.message}")
|
94
|
+
end
|
95
|
+
end
|
63
96
|
rescue => e
|
64
|
-
Hive.logger.
|
97
|
+
Hive.logger.debug("Connected Devices: #{connected_devices}")
|
98
|
+
Hive.logger.warn(e)
|
65
99
|
end
|
66
100
|
end
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
{
|
71
|
-
'id' => device.serial,
|
72
|
-
'serial' => device.serial,
|
73
|
-
'status' => 'idle',
|
74
|
-
'model' => device.model,
|
75
|
-
'brand' => 'Apple',
|
76
|
-
'os_version' => device.version,
|
77
|
-
'device_range' => device.device_class,
|
78
|
-
'queue_prefix' => @config['queue_prefix']
|
79
|
-
}
|
80
|
-
end
|
101
|
+
Hive.logger.info(attached_devices)
|
102
|
+
attached_devices
|
103
|
+
end
|
81
104
|
|
82
|
-
|
83
|
-
|
105
|
+
def detect_without_hivemind
|
106
|
+
connected_devices = get_connected_devices
|
107
|
+
Hive.logger.debug('No devices attached') if connected_devices.empty?
|
108
|
+
|
109
|
+
Hive.logger.info('No Hive Mind connection')
|
110
|
+
Hive.logger.debug("Error: #{Hive.hive_mind.device_details[:error]}")
|
111
|
+
# Hive Mind isn't available, use DeviceAPI instead
|
112
|
+
begin
|
113
|
+
device_info = devices.select{|a| a.trusted? }.map do |device|
|
114
|
+
{
|
115
|
+
'id' => device.serial,
|
116
|
+
'serial' => device.serial,
|
117
|
+
'status' => 'idle',
|
118
|
+
'model' => device.model,
|
119
|
+
'brand' => 'Apple',
|
120
|
+
'os_version' => device.version,
|
121
|
+
'device_range' => device.device_class,
|
122
|
+
'queue_prefix' => @config['queue_prefix']
|
123
|
+
}
|
124
|
+
end
|
125
|
+
attached_devices = device_info.collect do |physical_device|
|
84
126
|
self.create_device(physical_device)
|
85
|
-
rescue => e
|
86
|
-
Hive.logger.info("Could not create device: #{physical_device}");
|
87
127
|
end
|
128
|
+
rescue DeviceAPI::DeviceNotFound => e
|
129
|
+
Hive.logger.warn("Device disconnected while fetching device_info #{e.message}")
|
130
|
+
rescue => e
|
131
|
+
Hive.logger.warn(e)
|
88
132
|
end
|
133
|
+
|
134
|
+
Hive.logger.info(attached_devices)
|
135
|
+
attached_devices
|
89
136
|
end
|
90
137
|
|
91
|
-
|
92
|
-
|
138
|
+
def get_connected_devices
|
139
|
+
devices = DeviceAPI::IOS.devices
|
140
|
+
devices.select{|a| a.trusted? }
|
141
|
+
end
|
142
|
+
|
143
|
+
def get_hivemind_devices
|
144
|
+
begin
|
145
|
+
connected_devices = Hive.hive_mind.device_details['connected_devices'].select{ |d| d['device_type'] == 'Mobile' && d['operating_system_name'] == 'ios' }
|
146
|
+
rescue NoMethodError
|
147
|
+
# Failed to find connected devices
|
148
|
+
raise Hive::Controller::DeviceDetectionFailed
|
149
|
+
end
|
93
150
|
end
|
94
151
|
|
95
152
|
def display_untrusted
|
@@ -99,7 +156,7 @@ module Hive
|
|
99
156
|
return if untrusted_devices.empty?
|
100
157
|
puts Terminal::Table.new headings: ['Untrusted devices'], rows: [untrusted_devices]
|
101
158
|
end
|
159
|
+
|
102
160
|
end
|
103
161
|
end
|
104
162
|
end
|
105
|
-
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hive-runner-ios
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jon Wilson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-01-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hive-runner
|
@@ -83,7 +83,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
83
|
version: '0'
|
84
84
|
requirements: []
|
85
85
|
rubyforge_project:
|
86
|
-
rubygems_version: 2.
|
86
|
+
rubygems_version: 2.6.8
|
87
87
|
signing_key:
|
88
88
|
specification_version: 4
|
89
89
|
summary: Hive Runner iOS
|