nest_connect 0.1.5 → 0.1.6

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
  SHA256:
3
- metadata.gz: f22e8c2c849a0c92ee4f70f162dcfaf0703293e63d23ce6955947f846ade0d36
4
- data.tar.gz: 6023e55362c53c4226f51f7f4a58e2449e96dfd56a6ebd51bb045301cb5f5c72
3
+ metadata.gz: 16307cd03ce88685a4bdcb9cb8536c9305d6adcd54c0a64504f39a702f75d65d
4
+ data.tar.gz: a58028e7e645086b5db8f7103272cedfffddc7d36f5687ace836931a1134a71d
5
5
  SHA512:
6
- metadata.gz: da9b7fe679d73a26c2da24d4f14d84307ef83b615a3ae24b9c2f0127949672ee8c758a6cccd4491d6d24cbaca8861fdca2ab9bbcaca7e4995276ecbd30a9ddf3
7
- data.tar.gz: fd6967a3151049e264260fd692f350bce82682d779c4d67cd1a0af38d98b8902cf0f76dc18c5cf7ba068db82e2e97bdec309a3046b12df00cd344920ccc7546d
6
+ metadata.gz: 9bc1c8183dcbe06c24c699b86243e28df2f6c1b2668d4173e8a98bc9da862e0702e56990716b08728f88b2963dfd6d884eacfd4456650a8471b97f4086bca71a
7
+ data.tar.gz: e582717c3ed84a449c2cee58535e0be2ce7eba9b6706b5f6cce6d53a799c6396e51257b28e9c0a1c821eb14239a5b4c4ac90801494f34ac031b04fd6facbd8c1
data/.travis.yml CHANGED
@@ -3,7 +3,7 @@ language: ruby
3
3
  install:
4
4
  - 'gem update --system'
5
5
  - 'gem --version'
6
- - 'gem install bundler -v 1.17.2'
6
+ - 'gem install bundler'
7
7
  - 'bundle --version'
8
8
  - bundle
9
9
  rvm:
@@ -17,7 +17,7 @@ module NestConnect
17
17
 
18
18
  def connection
19
19
  Faraday.new(url: api_endpoint) do |faraday|
20
- faraday.response :json, :content_type => 'application/json'
20
+ faraday.response :json, content_type: 'application/json', parser_options: { symbolize_names: true }
21
21
  faraday.request :json
22
22
  faraday.use FaradayMiddleware::FollowRedirects
23
23
  faraday.use NestConnect::Adapter::StreamingNetHttp
@@ -32,6 +32,7 @@ end
32
32
 
33
33
  require_relative 'authorize'
34
34
  require_relative 'stream'
35
+ require_relative 'devices/base_device'
35
36
  require_relative 'devices/camera'
36
37
  require_relative 'devices/protect'
37
38
  require_relative 'devices/thermostat'
@@ -16,7 +16,7 @@ module NestConnect
16
16
  end
17
17
 
18
18
  if response.status == 200
19
- configuration.access_token = response.body['access_token']
19
+ configuration.access_token = response.body[:access_token]
20
20
  else
21
21
  stdout.write response.body
22
22
  end
@@ -0,0 +1,45 @@
1
+ module NestConnect
2
+ class API
3
+ module Devices
4
+ class BaseDevice < API
5
+ def initialize(resource_id: nil, access_token: nil)
6
+ @resource_id = resource_id
7
+ @access_token = access_token
8
+ end
9
+
10
+ def put(body)
11
+ connection.put do |request|
12
+ request.url(resource)
13
+ request.headers.merge!(headers)
14
+ request.body = body
15
+ end
16
+ end
17
+
18
+ def get
19
+ connection.get do |request|
20
+ request.url(resource)
21
+ request.headers.merge!(headers)
22
+ end
23
+ end
24
+
25
+ def all
26
+ connection.get do |request|
27
+ request.url(resources)
28
+ request.headers.merge!(headers)
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ attr_reader :resource_id
35
+
36
+ def headers
37
+ {
38
+ 'Content-Type' => 'application/json',
39
+ 'Authorization' => "Bearer #{access_token}"
40
+ }
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -1,40 +1,15 @@
1
1
  module NestConnect
2
2
  class API
3
3
  module Devices
4
- class Camera < API
5
- def initialize(device_id, access_token: nil)
6
- @device_id = device_id
7
- @access_token = access_token
8
- end
9
-
10
- def put(body)
11
- connection.put do |request|
12
- request.url(url)
13
- request.headers.merge!(headers)
14
- request.body = body
15
- end
16
- end
17
-
18
- def get
19
- connection.get do |request|
20
- request.url(url)
21
- request.headers.merge!(headers)
22
- end
23
- end
24
-
4
+ class Camera < BaseDevice
25
5
  private
26
6
 
27
- attr_reader :device_id
28
-
29
- def url
30
- "devices/cameras/#{device_id}"
7
+ def resource
8
+ "devices/cameras/#{resource_id}"
31
9
  end
32
10
 
33
- def headers
34
- {
35
- 'Content-Type' => 'application/json',
36
- 'Authorization' => "Bearer #{access_token}"
37
- }
11
+ def resources
12
+ "devices/cameras"
38
13
  end
39
14
  end
40
15
  end
@@ -1,32 +1,16 @@
1
1
  module NestConnect
2
2
  class API
3
3
  module Devices
4
- class Protect < API
5
- def initialize(device_id, access_token: nil)
6
- @device_id = device_id
7
- @access_token = access_token
8
- end
9
-
10
- def get
11
- connection.get do |request|
12
- request.url(url)
13
- request.headers.merge!(headers)
14
- end
15
- end
16
-
4
+ class Protect < BaseDevice
5
+ def put(*args); end
17
6
  private
18
7
 
19
- attr_reader :device_id
20
-
21
- def url
22
- "devices/smoke_co_alarms/#{device_id}"
8
+ def resource
9
+ "devices/smoke_co_alarms/#{resource_id}"
23
10
  end
24
11
 
25
- def headers
26
- {
27
- 'Content-Type' => 'application/json',
28
- 'Authorization' => "Bearer #{access_token}"
29
- }
12
+ def resources
13
+ "devices/smoke_co_alarms"
30
14
  end
31
15
  end
32
16
  end
@@ -1,40 +1,15 @@
1
1
  module NestConnect
2
2
  class API
3
3
  module Devices
4
- class Structure < API
5
- def initialize(structure_id, access_token: nil)
6
- @structure_id = structure_id
7
- @access_token = access_token
8
- end
9
-
10
- def put(body)
11
- connection.put do |request|
12
- request.url(url)
13
- request.headers.merge!(headers)
14
- request.body = body
15
- end
16
- end
17
-
18
- def get
19
- connection.get do |request|
20
- request.url(url)
21
- request.headers.merge!(headers)
22
- end
23
- end
24
-
4
+ class Structure < BaseDevice
25
5
  private
26
6
 
27
- attr_reader :structure_id
28
-
29
- def url
30
- "devices/structures/#{structure_id}"
7
+ def resource
8
+ "structures/#{resource_id}"
31
9
  end
32
10
 
33
- def headers
34
- {
35
- 'Content-Type' => 'application/json',
36
- 'Authorization' => "Bearer #{access_token}"
37
- }
11
+ def resources
12
+ "structures"
38
13
  end
39
14
  end
40
15
  end
@@ -1,40 +1,15 @@
1
1
  module NestConnect
2
2
  class API
3
3
  module Devices
4
- class Thermostat < API
5
- def initialize(device_id, access_token: nil)
6
- @device_id = device_id
7
- @access_token = access_token
8
- end
9
-
10
- def put(body)
11
- connection.put do |request|
12
- request.url(url)
13
- request.headers.merge!(headers)
14
- request.body = body
15
- end
16
- end
17
-
18
- def get
19
- connection.get do |request|
20
- request.url(url)
21
- request.headers.merge!(headers)
22
- end
23
- end
24
-
4
+ class Thermostat < BaseDevice
25
5
  private
26
6
 
27
- attr_reader :device_id
28
-
29
- def url
30
- "devices/thermostats/#{device_id}"
7
+ def resource
8
+ "devices/thermostats/#{resource_id}"
31
9
  end
32
10
 
33
- def headers
34
- {
35
- 'Content-Type' => 'application/json',
36
- 'Authorization' => "Bearer #{access_token}"
37
- }
11
+ def resources
12
+ "devices/thermostats"
38
13
  end
39
14
  end
40
15
  end
@@ -5,6 +5,18 @@ module NestConnect
5
5
  hash.values.map { |value| new(value) }
6
6
  end
7
7
 
8
+ def self.all(api_class: self.api_class, access_token: nil)
9
+ remote_hash = api_class.new(access_token: access_token).all.body
10
+ from_hash_collection(remote_hash)
11
+ end
12
+
13
+ def initialize(api_class: self.class.api_class, **args)
14
+ @api_class = api_class
15
+ args.each do |key, value|
16
+ instance_variable_set("@#{key}", value)
17
+ end
18
+ end
19
+
8
20
  def reload
9
21
  api_runner.get.body.each do |key, value|
10
22
  instance_variable_set("@#{key}", value)
@@ -1,11 +1,8 @@
1
1
  module NestConnect
2
2
  module Device
3
3
  class Camera < BaseDevice
4
- def initialize(api_class: NestConnect::API::Devices::Camera, **args)
5
- @api_class = api_class
6
- args.each do |key, value|
7
- instance_variable_set("@#{key}", value)
8
- end
4
+ def self.api_class
5
+ NestConnect::API::Devices::Camera
9
6
  end
10
7
 
11
8
  attr_reader(
@@ -1,11 +1,8 @@
1
1
  module NestConnect
2
2
  module Device
3
3
  class Protect < BaseDevice
4
- def initialize(api_class: NestConnect::API::Devices::Protect, **args)
5
- @api_class = api_class
6
- args.each do |key, value|
7
- instance_variable_set("@#{key}", value)
8
- end
4
+ def self.api_class
5
+ NestConnect::API::Devices::Protect
9
6
  end
10
7
 
11
8
  attr_reader(
@@ -1,11 +1,8 @@
1
1
  module NestConnect
2
2
  module Device
3
3
  class Structure < BaseDevice
4
- def initialize(api_class: NestConnect::API::Devices::Structure, **args)
5
- @api_class = api_class
6
- args.each do |key, value|
7
- instance_variable_set("@#{key}", value)
8
- end
4
+ def self.api_class
5
+ NestConnect::API::Devices::Structure
9
6
  end
10
7
 
11
8
  attr_reader(
@@ -4,7 +4,11 @@ module NestConnect
4
4
 
5
5
  module Device
6
6
  class Thermostat < BaseDevice
7
- def initialize(api_class: NestConnect::API::Devices::Thermostat, **args)
7
+ def self.api_class
8
+ NestConnect::API::Devices::Thermostat
9
+ end
10
+
11
+ def initialize(api_class: self.class.api_class, **args)
8
12
  @api_class = api_class
9
13
  args.each do |key, value|
10
14
  instance_variable_set("@#{key}", value)
@@ -175,7 +179,7 @@ module NestConnect
175
179
  private
176
180
 
177
181
  def api_runner
178
- api_class.new(device_id, access_token: access_token)
182
+ api_class.new(device_id: device_id, access_token: access_token)
179
183
  end
180
184
  end
181
185
  end
@@ -1,3 +1,3 @@
1
1
  module NestConnect
2
- VERSION = "0.1.5"
2
+ VERSION = "0.1.6"
3
3
  end
data/nest_connect.gemspec CHANGED
@@ -25,7 +25,6 @@ Gem::Specification.new do |spec|
25
25
  spec.add_dependency 'faraday_middleware', '~> 0.12'
26
26
  spec.add_dependency 'thor', '~> 0.20'
27
27
 
28
- spec.add_development_dependency "bundler", "~> 1.17"
29
28
  spec.add_development_dependency "byebug"
30
29
  spec.add_development_dependency "rake", "~> 10.0"
31
30
  spec.add_development_dependency "rspec", "~> 3.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nest_connect
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Karl Entwistle
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-01-20 00:00:00.000000000 Z
11
+ date: 2019-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0.20'
55
- - !ruby/object:Gem::Dependency
56
- name: bundler
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '1.17'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '1.17'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: byebug
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -143,6 +129,7 @@ files:
143
129
  - lib/nest_connect/api/adapter/streaming_net_http.rb
144
130
  - lib/nest_connect/api/api.rb
145
131
  - lib/nest_connect/api/authorize.rb
132
+ - lib/nest_connect/api/devices/base_device.rb
146
133
  - lib/nest_connect/api/devices/camera.rb
147
134
  - lib/nest_connect/api/devices/protect.rb
148
135
  - lib/nest_connect/api/devices/structure.rb