helium-ruby 0.24.0 → 0.25.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e020a0f77221244c8f3610773410718bd4609048
4
- data.tar.gz: a7dfe863e2ba493480596852726401696ea27814
3
+ metadata.gz: d6bfb3de65d88e40c9e014285e0c09d9f0641a09
4
+ data.tar.gz: faf40c337a4d56866cf6fcfc9d6526c8e0c610a0
5
5
  SHA512:
6
- metadata.gz: 17c7b6554c56efc3e1aba9c687a98a0a6a7dbcdd7df6f5575f44238a755031b5b4f5cefa94562d42e404ac1a49099813b9e063fdc28374289f119f83b3018ae3
7
- data.tar.gz: c0e67983f97cb527b104f27ddb3944e86f0176b7af2db386222ea186002a1edb635ca6b621dd9e6c348e3c9bd23c0680420ddacce4829fdecbf962b9aad12d4b
6
+ metadata.gz: 3eeeff34e0a3d97bec69dea00c9d4b53dd5bd01b9313d7f9d889d9c549f088d9c71f5b77267695c7d7fd3e88d1d261d34e27c7e13b9226e2bd922b8b546c4743
7
+ data.tar.gz: bcd20dec4ce7e6a4160e8a1006cca5b6b9dffd67affc2aa208483baf940804f414784cbac6ca8940e6abe06eccb9a42bfb4f716801304f898f78f111d9a33075
@@ -14,6 +14,14 @@ module Helium
14
14
  def sensors
15
15
  Collection.new(klass: Sensor, client: @client, belongs_to: self)
16
16
  end
17
+
18
+ def self.all_path
19
+ "/element?include=label"
20
+ end
21
+
22
+ def labels
23
+ Collection.new(klass: Label, client: @client, belongs_to: self)
24
+ end
17
25
 
18
26
  def device_configuration
19
27
  @client.element_device_configuration(self)
@@ -52,5 +60,38 @@ module Helium
52
60
  device_type: device_type
53
61
  })
54
62
  end
63
+
64
+ def add_labels(labels_to_add = [])
65
+ # There's no first-class support for modifying the labels of a element in
66
+ # the API yet, so we modify each label's relationship to the element. Once
67
+ # this is supported in the API, this can use #add_relationships instead.
68
+ # Same comment applies for the following 3 functions
69
+ labels_to_add = Array(labels_to_add)
70
+ labels_to_add.each do |label|
71
+ label.add_elements(self)
72
+ end
73
+ self
74
+ end
75
+
76
+ def replace_labels(labels_to_replace = [])
77
+ # To support replacement, we remove this element from each label, and then
78
+ # add it to the specified set
79
+ labels_to_replace = Array(labels_to_replace)
80
+ labels.each do |label|
81
+ label.remove_elements(self)
82
+ end
83
+ labels_to_replace.each do |label|
84
+ label.add_elements(self)
85
+ end
86
+ self
87
+ end
88
+
89
+ def remove_labels(labels_to_remove = [])
90
+ labels_to_remove = Array(labels_to_remove)
91
+ labels_to_remove.each do |label|
92
+ label.remove_elements(self)
93
+ end
94
+ self
95
+ end
55
96
  end
56
97
  end
@@ -27,6 +27,25 @@ module Helium
27
27
  self
28
28
  end
29
29
 
30
+ def elements
31
+ Collection.new(klass: Element, client: @client, belongs_to: self)
32
+ end
33
+
34
+ def add_elements(elements_to_add = [])
35
+ elements.add_relationships(elements_to_add)
36
+ self
37
+ end
38
+
39
+ def replace_elements(elements_to_replace = [])
40
+ elements.replace_relationships(elements_to_replace)
41
+ self
42
+ end
43
+
44
+ def remove_elements(elements_to_remove = [])
45
+ elements.remove_relationships(elements_to_remove)
46
+ self
47
+ end
48
+
30
49
  # TODO can probably generalize this a bit more
31
50
  def as_json
32
51
  super.merge({
@@ -103,7 +103,7 @@ module Helium
103
103
  response = @client.patch(resource_path, body: body)
104
104
  resource_data = JSON.parse(response.body)["data"]
105
105
 
106
- return self.class.new(client: self, params: resource_data)
106
+ return self.class.new(client: @client, params: resource_data)
107
107
  end
108
108
 
109
109
  # Deletes the Resource
@@ -93,6 +93,7 @@ module Helium
93
93
  labels_to_add.each do |label|
94
94
  label.add_sensors(self)
95
95
  end
96
+ self
96
97
  end
97
98
 
98
99
  def replace_labels(labels_to_replace = [])
@@ -105,6 +106,7 @@ module Helium
105
106
  labels_to_replace.each do |label|
106
107
  label.add_sensors(self)
107
108
  end
109
+ self
108
110
  end
109
111
 
110
112
  def remove_labels(labels_to_remove = [])
@@ -112,6 +114,7 @@ module Helium
112
114
  labels_to_remove.each do |label|
113
115
  label.remove_sensors(self)
114
116
  end
117
+ self
115
118
  end
116
119
  end
117
120
  end
@@ -1,3 +1,3 @@
1
1
  module Helium
2
- VERSION = "0.24.0"
2
+ VERSION = "0.25.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: helium-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.24.0
4
+ version: 0.25.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Allen
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2017-03-03 00:00:00.000000000 Z
12
+ date: 2017-04-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: typhoeus