class MindMeld::Device

Public Class Methods

new(options) click to toggle source
Calls superclass method MindMeld::new
# File lib/mind_meld/device.rb, line 6
def initialize options
  super

  @device = options[:device]
  # To trigger registration (is this needed?)
  @device_details = {}.with_indifferent_access
  device_details(view: 'simple')
end

Public Instance Methods

add_statistics(data) click to toggle source
Calls superclass method MindMeld#add_statistics
# 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 = {}) click to toggle source
# 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) click to toggle source
# 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}) click to toggle source
# 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) click to toggle source
# 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() click to toggle source
# File lib/mind_meld/device.rb, line 15
def id
  device_details['id']
end
name() click to toggle source
# File lib/mind_meld/device.rb, line 19
def name
  device_details['name']
end
poll(*dev_ids) click to toggle source
# 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) click to toggle source
# File lib/mind_meld/device.rb, line 27
def register options
  request :post, 'devices/register', { device: options }
end
send_screenshot(options) click to toggle source
# 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) click to toggle source
# 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