lights 0.8.20 → 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ed21be0871e4741fd8aaf4b8903213fb4ef5dccf
4
- data.tar.gz: 10d3beaa6edc33165857ee8560c7914be31ce096
3
+ metadata.gz: 7d6d774f2b47f0ba0dec8353e1476ec9ac3366e3
4
+ data.tar.gz: e84a70cc13a7a783bb993839618cffc15b9d243d
5
5
  SHA512:
6
- metadata.gz: 3e101fafceaca481c85416c7552862c4a689047e36b258c4e2b6a47d0b4c1b4856f3b20faa50ae8277021a8777a6abadccf84f3204c0f121b00f92ca14d8b016
7
- data.tar.gz: 850ced95840f4d312244f7bddf554e65cb72be6d424f3172b2faac7f030c494549c4dc7812ea83c7811092044ab98ecefc545d0a13a1fc7808ffaa14cc432f1f
6
+ metadata.gz: de9aca5aa3201622e69735a6625b104756165af6b951894adbe457a3503773896b5b12eb64110fae3366188027078c4b7d370bef6115157f278c7def134ea7fe
7
+ data.tar.gz: f73fa4c4d4284e7f12ec2e9c91a3d685d899db59c95a3d64bc125792b1c98c13cf516ed7262f13972ef21211f3a9007910c6955160d40a4aeffb3bd13bdc2538
data/README.md CHANGED
@@ -16,7 +16,7 @@ Basic Usage
16
16
  ```ruby
17
17
  require 'lights'
18
18
  client = Lights.new( '192.168.x.x', 'username' )
19
- client.register_username
19
+ client.register
20
20
  client.request_bulb_list
21
21
  ```
22
22
  See [lights-examples](https://github.com/turnerba/lights-examples) for more usage examples.
@@ -26,7 +26,6 @@ CLI Quick Setup
26
26
 
27
27
  ```
28
28
  lights discover -s
29
- lights config -f --user <username>
30
29
  lights register
31
30
  lights list
32
31
  lights on
data/bin/lights CHANGED
@@ -18,18 +18,22 @@ class LightsCli
18
18
  def configured?
19
19
  @config["username"] && @config["bridge_ip"]
20
20
  end
21
+
22
+ def ip_configured?
23
+ @config["bridge_ip"]
24
+ end
21
25
 
22
26
  def config
23
27
  options = {}
24
28
  OptionParser.new do |opts|
25
- opts.on("-u", "--user <username>", String, "Username"){|url| options[:user]=url}
26
29
  opts.on("-i", "--ip <bridge ip>", String, "Bridge ip address"){|ip| options[:ip]=ip}
27
30
  opts.on("-f", "--force", "Force write to config file"){|f| options[:force]=f}
28
31
  opts.on("-l", "--list", "List saved configuration settings") {|l| options[:list]=l}
29
32
  end.parse!
30
33
 
31
- if !options[:user] && !options[:ip] && !options[:list]
32
- puts "Must specify username and/or bridge IP: --user <username> --ip <IP addr. of bridge>"
34
+ unless options[:ip] || options[:list]
35
+ puts "usage:"
36
+ puts " #{File.basename(__FILE__)} config (--ip <bridge IP> | --list)"
33
37
  exit 1
34
38
  end
35
39
 
@@ -52,7 +56,6 @@ class LightsCli
52
56
  end
53
57
  end
54
58
 
55
- @config["username"] = options[:user] || @config["username"]
56
59
  @config["bridge_ip"] = options[:ip] || @config["bridge_ip"]
57
60
 
58
61
  write_config
@@ -263,7 +266,9 @@ class LightsCli
263
266
 
264
267
  def register
265
268
  lights = Lights.new @config["bridge_ip"], @config["username"]
266
- response = lights.register_username
269
+ response = lights.register
270
+ @config["username"] = lights.username
271
+ write_config
267
272
  end
268
273
 
269
274
  def discover
@@ -447,12 +452,14 @@ begin
447
452
  cli.config
448
453
  elsif command == "discover"
449
454
  cli.discover
455
+ elsif !cli.ip_configured?
456
+ puts "Please run 'lights discover -s' or 'lights config --ip <IP>' before using."
457
+ elsif command == "register"
458
+ cli.register
450
459
  elsif !cli.configured?
451
- puts "Please run 'lights config' before using."
460
+ puts "Please run 'lights register' before using."
452
461
  elsif command == "list"
453
462
  cli.list
454
- elsif command == "register"
455
- cli.register
456
463
  elsif command == "on"
457
464
  cli.on
458
465
  elsif command == "off"
@@ -12,8 +12,8 @@ require 'lights/loggerconfig'
12
12
 
13
13
  class Lights
14
14
 
15
- attr_reader :bulbs
16
- def initialize(ip,username)
15
+ attr_reader :bulbs, :username
16
+ def initialize(ip,username=nil)
17
17
  @ip = ip
18
18
  @username = username
19
19
  @http = Net::HTTP.new(ip,80)
@@ -40,16 +40,21 @@ class Lights
40
40
  @bridges
41
41
  end
42
42
 
43
- def register_username
44
- data = { "devicetype"=>"lights",
45
- "username"=>@username }
43
+ def register
44
+ data = { "devicetype"=>"lights" }
46
45
  response = @http.post "/api", data.to_json
47
46
  result = JSON.parse(response.body).first
48
47
  if result.has_key? "error"
49
48
  process_error result
49
+ elsif result["success"]
50
+ @username = result["success"]["username"]
50
51
  end
52
+ result
51
53
  end
52
54
 
55
+ # backwards compatibility
56
+ alias_method :register_username, :register
57
+
53
58
  def request_config
54
59
  get "config"
55
60
  end
@@ -172,6 +177,7 @@ private
172
177
 
173
178
  def get( path )
174
179
  @logger.debug "==> GET: #{path}"
180
+ raise UsernameException unless @username
175
181
  request = Net::HTTP::Get.new( "/api/#{@username}/#{path}" )
176
182
  response = @http.request request
177
183
  result = JSON.parse( response.body )
@@ -185,6 +191,7 @@ private
185
191
 
186
192
  def put( path, data={} )
187
193
  @logger.debug "==> PUT: #{path}"
194
+ raise UsernameException unless @username
188
195
  @logger.debug data.to_json
189
196
  response = @http.put( "/api/#{@username}/#{path}", data.to_json )
190
197
  result = JSON.parse( response.body )
@@ -198,6 +205,7 @@ private
198
205
 
199
206
  def post( path, data={} )
200
207
  @logger.debug "==> POST: #{path}"
208
+ raise UsernameException unless @username
201
209
  @logger.debug data.to_json
202
210
  response = @http.post( "/api/#{@username}/#{path}", data.to_json )
203
211
  result = JSON.parse( response.body )
@@ -211,6 +219,7 @@ private
211
219
 
212
220
  def delete( path )
213
221
  @logger.debug "==> DELETE: #{path}"
222
+ raise UsernameException unless @username
214
223
  request = Net::HTTP::Delete.new( "/api/#{@username}/#{path}" )
215
224
  response = @http.request request
216
225
  result = JSON.parse( response.body )
@@ -1,3 +1,3 @@
1
1
  module LightsConst
2
- VERSION = "0.8.20"
2
+ VERSION = "0.9.1"
3
3
  end
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
12
12
  s.summary = "lights"
13
13
  s.homepage = 'http://rubygems.org/gems/lights'
14
14
  s.license = 'MIT'
15
- s.date = '2014-10-11'
15
+ s.date = '2015-12-15'
16
16
 
17
17
  s.files = `git ls-files`.split($/)
18
18
  s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lights
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.20
4
+ version: 0.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brady Turner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-11 00:00:00.000000000 Z
11
+ date: 2015-12-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simpletable