Class: MindMeld::Device
Direct Known Subclasses
Hive, Tv
Instance Method Summary
collapse
Methods inherited from MindMeld
#devices, #flush_statistics
Constructor Details
#initialize(options) ⇒ Device
Returns a new instance of Device.
6
7
8
9
10
11
12
13
|
# File 'lib/mind_meld/device.rb', line 6
def initialize options
super
@device = options[:device]
@device_details = {}.with_indifferent_access
device_details(view: 'simple')
end
|
Instance Method Details
#add_statistics(data) ⇒ Object
77
78
79
80
81
82
83
84
85
86
87
88
|
# File 'lib/mind_meld/device.rb', line 77
def add_statistics data
if ! data.is_a? Array
data = [ data ]
end
id = self.id
data.each do |d|
d[:device_id] = id if ! d[:device_id]
end
super data
end
|
#clear_state(options = {}) ⇒ Object
90
91
92
93
94
95
96
97
|
# File 'lib/mind_meld/device.rb', line 90
def clear_state options = {}
state_params = {
device_id: self.id,
state: 'clear'
}
state_params[:component] = options[:component] if options.has_key? :component
request :put, 'devices/update_state', { device_state: state_params }
end
|
#create_action(options) ⇒ Object
42
43
44
45
|
# File 'lib/mind_meld/device.rb', line 42
def create_action options
response = request :put, 'devices/action', { device_action: { device_id: self.id }.merge(options) }
response
end
|
#device_details(options = {refresh: false}) ⇒ Object
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
# File 'lib/mind_meld/device.rb', line 54
def device_details(options = {refresh: false})
if options.is_a? Hash
refresh = options[:refresh] || false
view = options[:view] || 'full'
else
puts "[DEPRECATION WARNING] device_details(true) replaced by device_details(refresh: true) in Mind Meld"
refresh = options
view = 'full'
end
if refresh || ! @device_details.has_key?(:id)
if @device_details.has_key? :id
@device_details = request :get, "devices/#{@device_details[:id]}", { view: view }
elsif @device.has_key? :id
@device_details = request :get, "devices/#{@device[:id]}", { view: view }
else
@device_details = register @device
end
else
@device_details
end
end
|
#hive_queues(refresh = false) ⇒ Object
23
24
25
|
# File 'lib/mind_meld/device.rb', line 23
def hive_queues(refresh = false)
device_details(refresh: refresh)['hive_queues'] ? device_details['hive_queues'].map { |hq| hq['name'] } : []
end
|
#id ⇒ Object
15
16
17
|
# File 'lib/mind_meld/device.rb', line 15
def id
device_details['id']
end
|
#name ⇒ Object
19
20
21
|
# File 'lib/mind_meld/device.rb', line 19
def name
device_details['name']
end
|
#poll(*dev_ids) ⇒ Object
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/mind_meld/device.rb', line 31
def poll *dev_ids
args = {
poll: dev_ids.length > 0 ? { id: self.id, devices: dev_ids } : { id: self.id }
}
response = request :put, 'devices/poll', args
if dev_ids.length == 0
@device_details = response
end
response
end
|
#register(options) ⇒ Object
27
28
29
|
# File 'lib/mind_meld/device.rb', line 27
def register options
request :post, 'devices/register', { device: options }
end
|
#send_screenshot(options) ⇒ Object
47
48
49
50
51
52
|
# File 'lib/mind_meld/device.rb', line 47
def send_screenshot options
encoded = nil
encoded = Base64.encode64(File.open(options[:screenshot], "rb").read) if File.exists?(options[:screenshot])
response = request :put, 'devices/screenshot', { device_action: { screenshot: encoded, device_id: options[:device_id] } }
response
end
|
#set_state(options) ⇒ Object
99
100
101
102
103
104
105
106
107
108
|
# File 'lib/mind_meld/device.rb', line 99
def set_state options
request :put, 'devices/update_state',
{ device_state: {
device_id: self.id,
state: options[:state] || 'info',
component: options[:component] || '[None]',
message: options[:message]
}
}
end
|