lifx_api 0.1.1 → 0.1.2
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 +4 -4
- data/CHANGELOG +15 -0
- data/README.md +13 -8
- data/lib/lifx_api.rb +17 -7
- data/lib/lifx_api/endpoints.rb +6 -6
- data/lib/lifx_api/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7063a23a72264177f1c0390f2f166c9786b89dde
|
4
|
+
data.tar.gz: 5612881962ec05bd1fa756162ada974d52812f05
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d0af62c3c50bf5b19da43f0315dabbd21b3dec47a116722463ef0378b6423d4eb7aedf5f3ea4011fd0a28a23393f89ad892502297ea7c28759d4c492bd5d4fb2
|
7
|
+
data.tar.gz: eb95de0ae02a7bbb1eb17235b904f347decc4ecb67ad5ed93354edb821881eb6ad567483f96f508a9c9c7d848ccf12dd8a5a0c17c3d6f4ec64dd9fa6f9c8e1ad
|
data/CHANGELOG
ADDED
data/README.md
CHANGED
@@ -48,7 +48,7 @@ See [LIFX HTTP API](https://api.developer.lifx.com/) for the official documentat
|
|
48
48
|
|
49
49
|
Key | Type | Mandatory | Default | Description
|
50
50
|
--- | --- | --- | --- | ---
|
51
|
-
`:selector` | selector | | all |
|
51
|
+
`:selector` | selector | | all |
|
52
52
|
|
53
53
|
### set_state
|
54
54
|
|
@@ -56,7 +56,7 @@ Key | Type | Mandatory | Default | Description
|
|
56
56
|
|
57
57
|
Key | Type | Mandatory | Default | Description
|
58
58
|
--- | --- | --- | --- | ---
|
59
|
-
`:selector` | selector | | all |
|
59
|
+
`:selector` | selector | | all |
|
60
60
|
`:power` | string | | | The power state you want to set on the selector. on or off
|
61
61
|
`:color` | string | | | The color to set the light to.
|
62
62
|
`:brightness` | numeric | | | The brightness level from 0.0 to 1.0. Overrides any brightness set in color (if any).
|
@@ -69,8 +69,8 @@ Key | Type | Mandatory | Default | Description
|
|
69
69
|
|
70
70
|
Key | Type | Mandatory | Default | Description
|
71
71
|
--- | --- | --- | --- | ---
|
72
|
-
`:states` | | ✔ | |
|
73
|
-
`:defaults` | hash | | |
|
72
|
+
`:states` | | ✔ | |
|
73
|
+
`:defaults` | hash | | |
|
74
74
|
|
75
75
|
### stage_delta
|
76
76
|
|
@@ -78,7 +78,7 @@ Key | Type | Mandatory | Default | Description
|
|
78
78
|
|
79
79
|
Key | Type | Mandatory | Default | Description
|
80
80
|
--- | --- | --- | --- | ---
|
81
|
-
`:selector` | selector | | all |
|
81
|
+
`:selector` | selector | | all |
|
82
82
|
`:power` | on_off | | | The power state you want to set on the selector. on or off
|
83
83
|
`:duration` | numeric | | 1.0 | How long in seconds you want the power action to take. Range: 0.0 - 3155760000.0 (100 years)
|
84
84
|
`:infrared` | numeric | | | The maximum brightness of the infrared channel.
|
@@ -93,7 +93,7 @@ Key | Type | Mandatory | Default | Description
|
|
93
93
|
|
94
94
|
Key | Type | Mandatory | Default | Description
|
95
95
|
--- | --- | --- | --- | ---
|
96
|
-
`:selector` | selector | | all |
|
96
|
+
`:selector` | selector | | all |
|
97
97
|
`:duration` | numeric | | 1.0 | The time is seconds to spend perfoming the power toggle.
|
98
98
|
|
99
99
|
### breathe_effect
|
@@ -102,7 +102,7 @@ Key | Type | Mandatory | Default | Description
|
|
102
102
|
|
103
103
|
Key | Type | Mandatory | Default | Description
|
104
104
|
--- | --- | --- | --- | ---
|
105
|
-
`:selector` | selector | | all |
|
105
|
+
`:selector` | selector | | all |
|
106
106
|
`:color` | string | ✔ | | The color to use for the breathe effect.
|
107
107
|
`:from_color` | string | | current bulb color | The color to start the effect from. If this parameter is omitted then the color the bulb is currently set to is used instead.
|
108
108
|
`:period` | numeric | | 1.0 | The time in seconds for one cyles of the effect.
|
@@ -117,7 +117,7 @@ Key | Type | Mandatory | Default | Description
|
|
117
117
|
|
118
118
|
Key | Type | Mandatory | Default | Description
|
119
119
|
--- | --- | --- | --- | ---
|
120
|
-
`:selector` | selector | | all |
|
120
|
+
`:selector` | selector | | all |
|
121
121
|
`:color` | string | ✔ | | The color to use for the pulse effect.
|
122
122
|
`:from_color` | string | | current bulb color | The color to start the effect from. If this parameter is omitted then the color the bulb is currently set to is used instead.
|
123
123
|
`:period` | numeric | | 1.0 | The time in seconds for one cyles of the effect.
|
@@ -179,6 +179,11 @@ If there is an error, LifxApi will raise an exception. The exception message wil
|
|
179
179
|
|
180
180
|
Run `rake test` to run the tests and `rake console` to start an interactive pry console.
|
181
181
|
|
182
|
+
## TODO
|
183
|
+
|
184
|
+
* Validation of `:state' and ':array_of_states' is poor
|
185
|
+
* Validation of endpoints is non-existent
|
186
|
+
|
182
187
|
## Contributing
|
183
188
|
|
184
189
|
Bug reports and pull requests are welcome on GitHub at https://github.com/cyclotron3k/lifx_api.
|
data/lib/lifx_api.rb
CHANGED
@@ -49,21 +49,31 @@ class LifxApi
|
|
49
49
|
def valid?(value, value_format)
|
50
50
|
case value_format
|
51
51
|
when :selector
|
52
|
-
value
|
53
|
-
|
54
|
-
|
52
|
+
value.split(',').all? do |selector|
|
53
|
+
/^((label|id|(location|group)(_id)?|scene_id):.*|all)(:random|(\|[-\d]+)+)?$/ === selector
|
54
|
+
end
|
55
|
+
when :numeric, :brightness, :duration, :infrared
|
56
|
+
value.is_a?(Numeric) or /^[\d\.]+$/ === value
|
55
57
|
when :boolean
|
56
58
|
['true', 'false', true, false].include? value
|
57
|
-
when :on_off
|
59
|
+
when :on_off, :power
|
58
60
|
['on', 'off'].include? value
|
59
61
|
when :hash
|
60
62
|
value.is_a? Hash
|
61
|
-
when :string
|
63
|
+
when :string, :color
|
62
64
|
value.is_a? String
|
63
65
|
when :uuid
|
64
|
-
value.is_a?(String) and
|
66
|
+
value.is_a?(String) and /^[\da-f]{4}([\da-f]{4}-){4}[\da-f]{12}$/ === value
|
67
|
+
when :ignore_array
|
68
|
+
value.is_a?(Array) and (value - ['power', 'infrared', 'duration', 'intensity', 'hue', 'saturation', 'brightness', 'kelvin']).empty?
|
69
|
+
when :direction
|
70
|
+
value.is_a?(String) and ['forward', 'backward'].include? value
|
71
|
+
when :array_of_states
|
72
|
+
value.is_a?(Array) and value.count <= 50 and value.all? { |state| valid? state, :state }
|
73
|
+
when :state
|
74
|
+
value.is_a?(Hash) and (value.keys - [:selector, :power, :color, :brightness, :duration, :infrared]).empty? and value.all? { |k, v| valid? v, k }
|
65
75
|
else
|
66
|
-
|
76
|
+
raise ArgumentError, "Don't know how to validate #{value_format}"
|
67
77
|
true
|
68
78
|
end
|
69
79
|
end
|
data/lib/lifx_api/endpoints.rb
CHANGED
@@ -25,7 +25,7 @@ class LifxApi
|
|
25
25
|
http_method: :put,
|
26
26
|
path: '/v1/lights/states',
|
27
27
|
body_params: {
|
28
|
-
states: {required: true},
|
28
|
+
states: {required: true, type: :array_of_states},
|
29
29
|
defaults: {type: :hash},
|
30
30
|
},
|
31
31
|
}, {
|
@@ -90,9 +90,9 @@ class LifxApi
|
|
90
90
|
http_method: :post,
|
91
91
|
path: '/v1/lights/%{selector}/cycle',
|
92
92
|
body_params: {
|
93
|
-
states: {required: true, type:
|
94
|
-
defaults: {type:
|
95
|
-
direction: {type:
|
93
|
+
states: {required: true, type: :array_of_states, description: 'Array of state hashes as per Set State. Must have 2 to 5 entries.'},
|
94
|
+
defaults: {type: :state, description: 'Default values to use when not specified in each states[] object.'},
|
95
|
+
direction: {type: :direction, description: 'Direction in which to cycle through the list. Can be forward or backward'},
|
96
96
|
}
|
97
97
|
}, {
|
98
98
|
method_name: :list_scenes,
|
@@ -107,8 +107,8 @@ class LifxApi
|
|
107
107
|
},
|
108
108
|
body_params: {
|
109
109
|
duration: {type: :numeric, default_description: '1.0', description: 'The time in seconds to spend performing the scene transition.'},
|
110
|
-
ignore: {type:
|
111
|
-
overrides: {type:
|
110
|
+
ignore: {type: :ignore_array, description: 'Any of "power", "infrared", "duration", "intensity", "hue", "saturation", "brightness" or "kelvin", specifying that these properties should not be changed on devices when applying the scene.'},
|
111
|
+
overrides: {type: :state, description: 'A state object as per Set State specifying properties to apply to all devices in the scene, overriding those configured in the scene.'},
|
112
112
|
}
|
113
113
|
}, {
|
114
114
|
method_name: :validate_color,
|
data/lib/lifx_api/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lifx_api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- cyclotron3k
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-09-
|
11
|
+
date: 2017-09-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -73,6 +73,7 @@ extensions: []
|
|
73
73
|
extra_rdoc_files: []
|
74
74
|
files:
|
75
75
|
- ".gitignore"
|
76
|
+
- CHANGELOG
|
76
77
|
- Gemfile
|
77
78
|
- LICENSE.txt
|
78
79
|
- README.md
|