Class: MiOS::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/mios/client.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base_uri) ⇒ Client

Returns a new instance of Client.



5
6
7
8
# File 'lib/mios/client.rb', line 5

def initialize(base_uri)
  @base_uri = base_uri
  @client = HTTPClient.new
end

Instance Attribute Details

#base_uriObject (readonly)

Returns the value of attribute base_uri.



3
4
5
# File 'lib/mios/client.rb', line 3

def base_uri
  @base_uri
end

Instance Method Details

#action(action, service_id, params = {}) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/mios/client.rb', line 23

def action(action, service_id, params = {})
  data_request({
    id: 'action',
    action: action,
    serviceId: service_id,
  }.merge(params))
end

#data_request(params) ⇒ Object



10
11
12
13
14
15
16
# File 'lib/mios/client.rb', line 10

def data_request(params)
  default_params = { output_format: :json }
  params = default_params.merge(params)
  response = @client.get("#{@base_uri}/data_request", params)
  return JSON.parse(response.content) if response.ok?
  fail 'Device not available'
end

#device_status(device_id) ⇒ Object



18
19
20
21
# File 'lib/mios/client.rb', line 18

def device_status(device_id)
  result = data_request(id: 'status', DeviceNum: device_id)
  result["Device_Num_#{device_id}"]
end

#job_status(job_id) ⇒ Object



31
32
33
# File 'lib/mios/client.rb', line 31

def job_status(job_id)
  data_request(id: 'jobstatus', job: job_id, plugin: 'zwave')['status']
end