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 +4 -4
- data/.travis.yml +1 -1
- data/lib/nest_connect/api/api.rb +2 -1
- data/lib/nest_connect/api/authorize.rb +1 -1
- data/lib/nest_connect/api/devices/base_device.rb +45 -0
- data/lib/nest_connect/api/devices/camera.rb +5 -30
- data/lib/nest_connect/api/devices/protect.rb +6 -22
- data/lib/nest_connect/api/devices/structure.rb +5 -30
- data/lib/nest_connect/api/devices/thermostat.rb +5 -30
- data/lib/nest_connect/devices/base_device.rb +12 -0
- data/lib/nest_connect/devices/camera.rb +2 -5
- data/lib/nest_connect/devices/protect.rb +2 -5
- data/lib/nest_connect/devices/structure.rb +2 -5
- data/lib/nest_connect/devices/thermostat.rb +6 -2
- data/lib/nest_connect/version.rb +1 -1
- data/nest_connect.gemspec +0 -1
- metadata +3 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16307cd03ce88685a4bdcb9cb8536c9305d6adcd54c0a64504f39a702f75d65d
|
4
|
+
data.tar.gz: a58028e7e645086b5db8f7103272cedfffddc7d36f5687ace836931a1134a71d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9bc1c8183dcbe06c24c699b86243e28df2f6c1b2668d4173e8a98bc9da862e0702e56990716b08728f88b2963dfd6d884eacfd4456650a8471b97f4086bca71a
|
7
|
+
data.tar.gz: e582717c3ed84a449c2cee58535e0be2ce7eba9b6706b5f6cce6d53a799c6396e51257b28e9c0a1c821eb14239a5b4c4ac90801494f34ac031b04fd6facbd8c1
|
data/.travis.yml
CHANGED
data/lib/nest_connect/api/api.rb
CHANGED
@@ -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, :
|
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'
|
@@ -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 <
|
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
|
-
|
28
|
-
|
29
|
-
def url
|
30
|
-
"devices/cameras/#{device_id}"
|
7
|
+
def resource
|
8
|
+
"devices/cameras/#{resource_id}"
|
31
9
|
end
|
32
10
|
|
33
|
-
def
|
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 <
|
5
|
-
def
|
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
|
-
|
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
|
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 <
|
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
|
-
|
28
|
-
|
29
|
-
def url
|
30
|
-
"devices/structures/#{structure_id}"
|
7
|
+
def resource
|
8
|
+
"structures/#{resource_id}"
|
31
9
|
end
|
32
10
|
|
33
|
-
def
|
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 <
|
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
|
-
|
28
|
-
|
29
|
-
def url
|
30
|
-
"devices/thermostats/#{device_id}"
|
7
|
+
def resource
|
8
|
+
"devices/thermostats/#{resource_id}"
|
31
9
|
end
|
32
10
|
|
33
|
-
def
|
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
|
5
|
-
|
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
|
5
|
-
|
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
|
5
|
-
|
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
|
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
|
data/lib/nest_connect/version.rb
CHANGED
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.
|
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-
|
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
|