nest_connect 0.1.5 → 0.1.6

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
  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