Module: Helium::Client::Labels

Included in:
Helium::Client
Defined in:
lib/helium/client/labels.rb

Instance Method Summary collapse

Instance Method Details

#delete_label(label) ⇒ Object



59
60
61
62
# File 'lib/helium/client/labels.rb', line 59

def delete_label(label)
  path = "/label/#{label.id}"
  delete(path)
end

#label(id) ⇒ Object



15
16
17
18
19
20
# File 'lib/helium/client/labels.rb', line 15

def label(id)
  response = get("/label/#{id}")
  label_data = JSON.parse(response.body)["data"]

  return Label.new(client: self, params: label_data)
end

#label_sensors(label) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
# File 'lib/helium/client/labels.rb', line 64

def label_sensors(label)
  path = "/label/#{label.id}/sensor"
  response = get(path)
  sensors_data = JSON.parse(response.body)["data"]

  sensors = sensors_data.map do |sensor_data|
    Sensor.new(client: self, params: sensor_data)
  end

  return sensors
end

#labelsObject



4
5
6
7
8
9
10
11
12
13
# File 'lib/helium/client/labels.rb', line 4

def labels
  response = get('/label')
  labels_data = JSON.parse(response.body)["data"]

  labels = labels_data.map do |label_data|
    Label.new(client: self, params: label_data)
  end

  return labels
end

#new_label(name:) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/helium/client/labels.rb', line 22

def new_label(name:)
  path = "/label"

  body = {
    data: {
      attributes: {
        name: name
      },
      type: "label"
    }
  }

  response = post(path, body: body)
  label_data = JSON.parse(response.body)["data"]

  return Label.new(client: self, params: label_data)
end

#update_label(label, name:) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/helium/client/labels.rb', line 40

def update_label(label, name:)
  path = "/label/#{label.id}"

  body = {
    data: {
      attributes: {
        name: name
      },
      id: label.id,
      type: "label"
    }
  }

  response = patch(path, body: body)
  label_data = JSON.parse(response.body)["data"]

  return Label.new(client: self, params: label_data)
end

#update_label_sensors(label, sensors: []) ⇒ Object



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/helium/client/labels.rb', line 76

def update_label_sensors(label, sensors: [])
  path = "/label/#{label.id}/relationships/sensor"

  sensors = Array(sensors)

  new_sensor_data = sensors.map do |sensor|
    {
      id: sensor.id,
      type: 'sensor'
    }
  end

  body = {
    data: new_sensor_data
  }

  response = patch(path, body: body)
  sensors_data = JSON.parse(response.body)["data"]

  # TODO: these come back deflated. need to either inflate at this point or
  # when needed
  sensors = sensors_data.map do |sensor_data|
    Sensor.new(client: self, params: sensor_data)
  end

  return sensors
end