ruby_hue 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,17 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --color
2
+ --format documentation
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in ruby_hue.gemspec
4
+ gemspec
@@ -0,0 +1,9 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'rspec' do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
7
+ watch('spec/spec_helper.rb') { "spec" }
8
+ end
9
+
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2013 Robert Ross
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,29 @@
1
+ # RubyHue
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ gem 'ruby_hue'
10
+
11
+ And then execute:
12
+
13
+ $ bundle
14
+
15
+ Or install it yourself as:
16
+
17
+ $ gem install ruby_hue
18
+
19
+ ## Usage
20
+
21
+ TODO: Write usage instructions here
22
+
23
+ ## Contributing
24
+
25
+ 1. Fork it
26
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
27
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
28
+ 4. Push to the branch (`git push origin my-new-feature`)
29
+ 5. Create new Pull Request
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,13 @@
1
+ require "ruby_hue/version"
2
+ require "ruby_hue/client"
3
+ require "ruby_hue/configuration"
4
+ require "ruby_hue/model"
5
+ require "ruby_hue/light"
6
+ require "ruby_hue/light/state"
7
+ require "ruby_hue/bridge"
8
+
9
+ module RubyHue
10
+ def self.configuration
11
+ @configuration ||= Configuration.new
12
+ end
13
+ end
@@ -0,0 +1,28 @@
1
+ module RubyHue
2
+ class Bridge
3
+ attr_reader :ip_address, :username
4
+
5
+ class << self
6
+ def all
7
+ Client.get_and_parse("http://www.meethue.com/api/nupnp").map do |bridge|
8
+ self.new(bridge["internalipaddress"])
9
+ end
10
+ end
11
+ end
12
+
13
+ def initialize(ip_address, username=nil)
14
+ @ip_address = ip_address
15
+ @username = username
16
+ end
17
+
18
+ def resource_url_for(name)
19
+ "http://#{ip_address}/api/#{username}/#{name}"
20
+ end
21
+
22
+ def lights
23
+ Client.get_and_parse(resource_url_for("lights")).map do |id, light|
24
+ RubyHue::Light.new(id, self)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,17 @@
1
+ require "httparty"
2
+
3
+ module RubyHue
4
+ class Client
5
+ include HTTParty
6
+
7
+ def self.get_and_parse(*args)
8
+ response = get(*args)
9
+ MultiJson.load(response.body)
10
+ end
11
+
12
+ def self.put_and_parse(*args)
13
+ response = put(*args)
14
+ MultiJson.load(response.body)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,5 @@
1
+ module RubyHue
2
+ class Configuration
3
+ attr_accessor :bridge_ip, :api_username
4
+ end
5
+ end
@@ -0,0 +1,18 @@
1
+ module RubyHue
2
+ class Light
3
+ attr_reader :id, :bridge
4
+
5
+ def initialize(id, bridge)
6
+ @id = id
7
+ @bridge = bridge
8
+ end
9
+
10
+ def attributes
11
+ @attributes ||= Client.get_and_parse bridge.resource_url_for("lights/#{id}")
12
+ end
13
+
14
+ def state
15
+ Light::State.new(self, attributes["state"])
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,63 @@
1
+ require "json"
2
+
3
+ module RubyHue
4
+ class Light
5
+ class State
6
+ MAPPING = {
7
+ on: :on,
8
+ bri: :brightness,
9
+ hue: :hue,
10
+ sat: :saturation,
11
+ xy: :xy,
12
+ ct: :color_temperature,
13
+ alert: :alert,
14
+ effect: :effect,
15
+ colormode: :color_mode,
16
+ reachable: :reachable
17
+ }
18
+
19
+ IMMUTABLE_KEYS = %w(colormode reachable)
20
+
21
+ attr_writer :state
22
+ attr_reader :light
23
+
24
+ def initialize(light, state)
25
+ @light = light
26
+ @state = state
27
+ end
28
+
29
+ def state
30
+ @state ||= {}
31
+ end
32
+
33
+ def save
34
+ url = bridge.resource_url_for("lights/#{light.id}/state")
35
+ body = JSON.generate updateable_state
36
+ Client.put_and_parse(url, body: body)
37
+ end
38
+
39
+ def bridge
40
+ light.bridge
41
+ end
42
+
43
+ def updateable_state
44
+ @state.reject do |key, value|
45
+ IMMUTABLE_KEYS.include? key
46
+ end
47
+ end
48
+
49
+ MAPPING.each do |hue_key, method_name|
50
+ hue_key = hue_key.to_s
51
+ define_method method_name do
52
+ @state[hue_key]
53
+ end
54
+
55
+ unless IMMUTABLE_KEYS.include?(hue_key)
56
+ define_method "#{method_name}=".to_sym do |new_value|
57
+ @state[hue_key] = new_value
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,21 @@
1
+ module RubyHue
2
+ module Model
3
+ IncompleteImplementation = Class.new(StandardError)
4
+
5
+ def model_name
6
+ raise IncompleteImplementation, "Please implement a #model_name method"
7
+ end
8
+
9
+ def to_key
10
+ raise IncompleteImplementation, "Please implement a #to_key method"
11
+ end
12
+
13
+ def persisted?
14
+ false
15
+ end
16
+
17
+ def resource_name
18
+ raise IncompleteImplementation, "Please implement a #resource_name method"
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,3 @@
1
+ module RubyHue
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,28 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'ruby_hue/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "ruby_hue"
8
+ gem.version = RubyHue::VERSION
9
+ gem.authors = ["Robert Ross"]
10
+ gem.email = ["robert@creativequeries.com"]
11
+ gem.description = %q{RubyHue is a library for interacting with Hue light bulbs from Phillips.}
12
+ gem.summary = %q{RubyHue is a library for interacting with Hue light bulbs from Phillips.}
13
+ gem.homepage = "http://github.com/bobbytables/ruby_hue"
14
+
15
+ gem.files = `git ls-files`.split($/)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.require_paths = ["lib"]
19
+
20
+ gem.add_development_dependency "rspec", "~> 2.13.0"
21
+ gem.add_development_dependency "awesome_print", "~> 1.1.0"
22
+ gem.add_development_dependency "webmock", "~> 1.11.0"
23
+ gem.add_development_dependency "typhoeus", "~> 0.6.2"
24
+ gem.add_development_dependency "guard-rspec", "~> 2.5.1gua"
25
+
26
+ gem.add_runtime_dependency "httparty", "~> 0.10.2"
27
+ gem.add_runtime_dependency "multi_json", "~> 1.7.2"
28
+ end
@@ -0,0 +1 @@
1
+ [{"id":"13337fffe0a1337","internalipaddress":"192.168.1.100","macaddress":"00:89:89:89:89:19"}]
@@ -0,0 +1,31 @@
1
+ {
2
+ "state": {
3
+ "on": true,
4
+ "bri": 120,
5
+ "hue": 64782,
6
+ "sat": 132,
7
+ "xy": [
8
+ 0.5227,
9
+ 0.3423
10
+ ],
11
+ "ct": 488,
12
+ "alert": "none",
13
+ "effect": "none",
14
+ "colormode": "xy",
15
+ "reachable": true
16
+ },
17
+ "type": "Extended color light",
18
+ "name": "Hue Lamp 1",
19
+ "modelid": "LCT001",
20
+ "swversion": "65003148",
21
+ "pointsymbol": {
22
+ "1": "none",
23
+ "2": "none",
24
+ "3": "none",
25
+ "4": "none",
26
+ "5": "none",
27
+ "6": "none",
28
+ "7": "none",
29
+ "8": "none"
30
+ }
31
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "1": {
3
+ "name": "Hue Lamp 1"
4
+ },
5
+ "2": {
6
+ "name": "Hue Lamp 2"
7
+ },
8
+ "3": {
9
+ "name": "Hue Lamp 3"
10
+ }
11
+ }
@@ -0,0 +1,47 @@
1
+ require "spec_helper"
2
+
3
+ describe RubyHue::Bridge do
4
+ let(:ip) { "192.168.100.1" }
5
+ let(:username) { "awesomeusername" }
6
+
7
+ subject(:bridge) { described_class.new(ip, username) }
8
+
9
+ describe "#initialize" do
10
+ it "initializes with ip address" do
11
+ instance = described_class.new(ip)
12
+ expect(instance.ip_address).to eq ip
13
+ end
14
+
15
+ it "initializes with a username" do
16
+ instance = described_class.new(ip, username)
17
+ expect(instance.username).to eq username
18
+ end
19
+ end
20
+
21
+ describe ".all" do
22
+ before do
23
+ stub_request(:get, "http://www.meethue.com/api/nupnp").to_return(body: fixture("bridges.json"))
24
+ end
25
+
26
+ it "returns all bridges" do
27
+ expect(RubyHue::Bridge.all).to have(1).items
28
+ end
29
+ end
30
+
31
+ describe "#resource_url_for" do
32
+ it "returns the url for a resource name" do
33
+ expect(subject.resource_url_for("lights")).to eq("http://#{ip}/api/#{username}/lights")
34
+ end
35
+ end
36
+
37
+ describe "#lights" do
38
+ before do
39
+ stub_request(:get, subject.resource_url_for("lights")).to_return(body: fixture("lights.json"))
40
+ end
41
+
42
+ it "returns a collection of light objects" do
43
+ RubyHue::Light.should_receive(:new).with(kind_of(String), kind_of(RubyHue::Bridge)).exactly(3).times
44
+ bridge.lights
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,17 @@
1
+ require "spec_helper"
2
+
3
+ describe RubyHue::Client do
4
+ describe ".put_and_parse" do
5
+ let(:json) { '{"on": true}' }
6
+
7
+ before do
8
+ described_class.should_receive(:put).with("/", {}).and_return(json)
9
+ end
10
+
11
+ pending "loads the json response" do
12
+ response = RubyHue::Client.put_and_parse("/", {})
13
+ expect(response).to have_key "on"
14
+ expect(response["on"]).to be_true
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,13 @@
1
+ require "spec_helper"
2
+
3
+ describe RubyHue::Configuration do
4
+ it "has a bridge_ip" do
5
+ expect(subject).to respond_to :bridge_ip
6
+ expect(subject).to respond_to :bridge_ip=
7
+ end
8
+
9
+ it "has a api_username" do
10
+ expect(subject).to respond_to :api_username
11
+ expect(subject).to respond_to :api_username=
12
+ end
13
+ end
@@ -0,0 +1,66 @@
1
+ require "spec_helper"
2
+
3
+ describe RubyHue::Light::State do
4
+ light_with_bridge!
5
+ subject { light.state }
6
+ let(:state_hash) { {} }
7
+
8
+ before do
9
+ stub_request(:get, bridge.resource_url_for("lights/#{light.id}")).
10
+ to_return(body: fixture("light_1.json"))
11
+ end
12
+
13
+ describe "#initialize" do
14
+ let(:instance) { described_class.new(light, state_hash) }
15
+
16
+ it "accepts a light argument" do
17
+ expect(instance.light).to be light
18
+ end
19
+
20
+ it "accepts a state hash argument" do
21
+ expect(instance.state).to be state_hash
22
+ end
23
+ end
24
+
25
+ describe "#state" do
26
+ it "returns a hash" do
27
+ expect(subject.state).to be_kind_of Hash
28
+ end
29
+ end
30
+
31
+ describe "getter methods" do
32
+ let(:method_mapping) { method_mapping = described_class::MAPPING }
33
+
34
+ it "responds to all keys available for a state" do
35
+ method_mapping.each do |hue_key, ruby_hue_method|
36
+ expect(subject.state).to have_key hue_key.to_s
37
+ expect(subject).to respond_to ruby_hue_method
38
+ end
39
+ end
40
+
41
+ it "returns the value for a state" do
42
+ method_mapping.each do |hue_key, ruby_hue_method|
43
+ expect(subject.send(ruby_hue_method)).to eq(subject.state[hue_key.to_s])
44
+ end
45
+ end
46
+ end
47
+
48
+ describe "#save" do
49
+ let!(:state_request_stub) do
50
+ stub_request(:put, bridge.resource_url_for("lights/#{light.id}/state")).to_return(body: "{}")
51
+ end
52
+
53
+ it "PUT's the state attributes for the light" do
54
+ subject.save
55
+ expect(state_request_stub).to have_been_requested
56
+ end
57
+ end
58
+
59
+ describe "#updateable_state" do
60
+ it "does not include immutable values" do
61
+ described_class::IMMUTABLE_KEYS.each do |key|
62
+ expect(subject.updateable_state.keys).not_to include key
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,34 @@
1
+ require "spec_helper"
2
+
3
+ describe RubyHue::Light do
4
+ let(:id) { "1" }
5
+ let(:bridge) { RubyHue::Bridge.new("192.168.100.1", "awesomeusername") }
6
+ subject(:light) { described_class.new(id, bridge) }
7
+
8
+ before do
9
+ stub_request(:get, bridge.resource_url_for("lights/#{id}"))
10
+ .to_return(body: fixture("light_1.json"))
11
+ end
12
+
13
+ describe "#initialize" do
14
+ let(:instance) { described_class.new(id, bridge) }
15
+
16
+ it "sets the ID" do
17
+ expect(instance.id).to eq(id)
18
+ end
19
+
20
+ it "sets the bridge" do
21
+ expect(instance.bridge).to be bridge
22
+ end
23
+
24
+ it "retrieves the light attributes" do
25
+ expect(instance.attributes).to be_kind_of Hash
26
+ end
27
+ end
28
+
29
+ describe "#state" do
30
+ it "returns a Light::State object" do
31
+ expect(subject.state).to be_kind_of RubyHue::Light::State
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,32 @@
1
+ require "spec_helper"
2
+
3
+ describe RubyHue::Model do
4
+ describe "inclusion" do
5
+ context "into a bare class" do
6
+ subject do
7
+ klass = Class.new { include RubyHue::Model }
8
+ klass.new
9
+ end
10
+
11
+ specify "#model_name raises" do
12
+ expect { subject.model_name }.to raise_exception(RubyHue::Model::IncompleteImplementation)
13
+ end
14
+
15
+ specify "#to_key raises" do
16
+ expect { subject.to_key }.to raise_exception(RubyHue::Model::IncompleteImplementation)
17
+ end
18
+
19
+ specify "#persisted? returns false" do
20
+ expect(subject).not_to be_persisted
21
+ end
22
+
23
+ specify "#resource_name raises" do
24
+ expect { subject.resource_name }.to raise_exception(RubyHue::Model::IncompleteImplementation)
25
+ end
26
+ end
27
+ end
28
+
29
+ describe "complete implementation" do
30
+ context "#"
31
+ end
32
+ end
@@ -0,0 +1,9 @@
1
+ require "spec_helper"
2
+
3
+ describe RubyHue do
4
+ describe ".configure" do
5
+ it "returns a configuration object" do
6
+ expect(RubyHue.configuration).to be_kind_of RubyHue::Configuration
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,15 @@
1
+ require "ruby_hue"
2
+
3
+ require "webmock/rspec"
4
+
5
+ Dir['./spec/support/**/*.rb'].each {|f| require f }
6
+
7
+ RSpec.configure do |config|
8
+ config.treat_symbols_as_metadata_keys_with_true_values = true
9
+ config.run_all_when_everything_filtered = true
10
+ config.filter_run :focus
11
+ config.order = 'random'
12
+
13
+ config.include FixtureHelpers
14
+ config.extend LightBridgeHelpers
15
+ end
@@ -0,0 +1,15 @@
1
+ class HueModel
2
+ include RubyHue::Model
3
+
4
+ def model_name
5
+ "hue_model"
6
+ end
7
+
8
+ def to_key
9
+ nil
10
+ end
11
+
12
+ def resource_name
13
+ "hue_model"
14
+ end
15
+ end
@@ -0,0 +1,7 @@
1
+ require "pathname"
2
+
3
+ module FixtureHelpers
4
+ def fixture(filename)
5
+ File.read(Pathname.pwd.join("spec", "fixtures", "responses", filename))
6
+ end
7
+ end
@@ -0,0 +1,6 @@
1
+ module LightBridgeHelpers
2
+ def light_with_bridge!(light_name=:light, bridge_name=:bridge)
3
+ let(bridge_name) { RubyHue::Bridge.new("192.168.100.1", "awesomename") }
4
+ let(light_name) { RubyHue::Light.new(1, send(bridge_name)) }
5
+ end
6
+ end
metadata ADDED
@@ -0,0 +1,204 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby_hue
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Robert Ross
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-03-31 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: 2.13.0
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: 2.13.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: awesome_print
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: 1.1.0
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: 1.1.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: webmock
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ~>
52
+ - !ruby/object:Gem::Version
53
+ version: 1.11.0
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.11.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: typhoeus
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: 0.6.2
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: 0.6.2
78
+ - !ruby/object:Gem::Dependency
79
+ name: guard-rspec
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: 2.5.1gua
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: 2.5.1gua
94
+ - !ruby/object:Gem::Dependency
95
+ name: httparty
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ~>
100
+ - !ruby/object:Gem::Version
101
+ version: 0.10.2
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ~>
108
+ - !ruby/object:Gem::Version
109
+ version: 0.10.2
110
+ - !ruby/object:Gem::Dependency
111
+ name: multi_json
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: 1.7.2
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ~>
124
+ - !ruby/object:Gem::Version
125
+ version: 1.7.2
126
+ description: RubyHue is a library for interacting with Hue light bulbs from Phillips.
127
+ email:
128
+ - robert@creativequeries.com
129
+ executables: []
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - .gitignore
134
+ - .rspec
135
+ - Gemfile
136
+ - Guardfile
137
+ - LICENSE.txt
138
+ - README.md
139
+ - Rakefile
140
+ - lib/ruby_hue.rb
141
+ - lib/ruby_hue/bridge.rb
142
+ - lib/ruby_hue/client.rb
143
+ - lib/ruby_hue/configuration.rb
144
+ - lib/ruby_hue/light.rb
145
+ - lib/ruby_hue/light/state.rb
146
+ - lib/ruby_hue/model.rb
147
+ - lib/ruby_hue/version.rb
148
+ - ruby_hue.gemspec
149
+ - spec/fixtures/responses/bridges.json
150
+ - spec/fixtures/responses/light_1.json
151
+ - spec/fixtures/responses/light_1_state.json
152
+ - spec/fixtures/responses/lights.json
153
+ - spec/ruby_hue/bridge_spec.rb
154
+ - spec/ruby_hue/client_spec.rb
155
+ - spec/ruby_hue/configuration_spec.rb
156
+ - spec/ruby_hue/light/state_spec.rb
157
+ - spec/ruby_hue/light_spec.rb
158
+ - spec/ruby_hue/model_spec.rb
159
+ - spec/ruby_hue/ruby_hue_spec.rb
160
+ - spec/spec_helper.rb
161
+ - spec/support/complete_hue_model.rb
162
+ - spec/support/fixture_helpers.rb
163
+ - spec/support/light_bridge_helpers.rb
164
+ homepage: http://github.com/bobbytables/ruby_hue
165
+ licenses: []
166
+ post_install_message:
167
+ rdoc_options: []
168
+ require_paths:
169
+ - lib
170
+ required_ruby_version: !ruby/object:Gem::Requirement
171
+ none: false
172
+ requirements:
173
+ - - ! '>='
174
+ - !ruby/object:Gem::Version
175
+ version: '0'
176
+ required_rubygems_version: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ requirements: []
183
+ rubyforge_project:
184
+ rubygems_version: 1.8.23
185
+ signing_key:
186
+ specification_version: 3
187
+ summary: RubyHue is a library for interacting with Hue light bulbs from Phillips.
188
+ test_files:
189
+ - spec/fixtures/responses/bridges.json
190
+ - spec/fixtures/responses/light_1.json
191
+ - spec/fixtures/responses/light_1_state.json
192
+ - spec/fixtures/responses/lights.json
193
+ - spec/ruby_hue/bridge_spec.rb
194
+ - spec/ruby_hue/client_spec.rb
195
+ - spec/ruby_hue/configuration_spec.rb
196
+ - spec/ruby_hue/light/state_spec.rb
197
+ - spec/ruby_hue/light_spec.rb
198
+ - spec/ruby_hue/model_spec.rb
199
+ - spec/ruby_hue/ruby_hue_spec.rb
200
+ - spec/spec_helper.rb
201
+ - spec/support/complete_hue_model.rb
202
+ - spec/support/fixture_helpers.rb
203
+ - spec/support/light_bridge_helpers.rb
204
+ has_rdoc: