particlerb 1.2.0 → 1.3.0
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/README.md +8 -0
- data/lib/particle/client/devices.rb +11 -1
- data/lib/particle/device.rb +8 -3
- data/lib/particle/error.rb +17 -5
- data/lib/particle/version.rb +1 -1
- data/particlerb.gemspec +1 -0
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37bc075ad379696171285775ffe5459576911a3a
|
4
|
+
data.tar.gz: 106fc46626db184c125f1c58b7ed401db52d5538
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62251040926a8069a2323eaa8b430ee751b0e6de00825d0b70fa13a29939133d91664f810c376bf14d703f2b62ecc819c30be297ca7bc91f5798551e16191a77
|
7
|
+
data.tar.gz: cc6982a03d9bd6861bf03d37b3fe8684ce8d7f236fb9f298d5a093afa6b847c2d0203149797eab98f64fe8ed4d11e065e32c93aa005102f650d486ceb7581044
|
data/README.md
CHANGED
@@ -145,6 +145,14 @@ Signal a device to start blinking the RGB LED in rainbow patterns. Returns wheth
|
|
145
145
|
Particle.device('nyan_cat').signal(true)
|
146
146
|
```
|
147
147
|
|
148
|
+
Create a new device for a product that allows self-provisioning. Currently only the Raspberry Pi (product id 31) allows this. Returns the new device. You can then claim the device when it is online.
|
149
|
+
|
150
|
+
```ruby
|
151
|
+
device = Particle.provision_device(product_id: 31)
|
152
|
+
# Wait for device to be online
|
153
|
+
device.claim
|
154
|
+
```
|
155
|
+
|
148
156
|
Change the product id. The meaning of the product id is specific to your application and account.
|
149
157
|
|
150
158
|
```ruby
|
@@ -47,6 +47,16 @@ module Particle
|
|
47
47
|
device(result[:id])
|
48
48
|
end
|
49
49
|
|
50
|
+
# Create a new Particle device
|
51
|
+
#
|
52
|
+
# @param product [String] A product id
|
53
|
+
# @return [Device] A device object to interact with
|
54
|
+
def provision_device(params)
|
55
|
+
product_id = params[:product_id] or raise ArgumentError.new("product_id parameter is required")
|
56
|
+
result = post(Device.provision_path, product_id: product_id)
|
57
|
+
device(result[:device_id])
|
58
|
+
end
|
59
|
+
|
50
60
|
# Remove a Particle device from your account
|
51
61
|
#
|
52
62
|
# @param target [String, Device] A device id, name or {Device} object
|
@@ -128,7 +138,7 @@ module Particle
|
|
128
138
|
# (default rsa)
|
129
139
|
# @return [boolean] true when successful
|
130
140
|
def update_device_public_key(target, public_key, algorithm = 'rsa')
|
131
|
-
result = post(Device.
|
141
|
+
result = post(Device.update_keys_path,
|
132
142
|
deviceID: device(target).id,
|
133
143
|
publicKey: public_key,
|
134
144
|
algorithm: algorithm)
|
data/lib/particle/device.rb
CHANGED
@@ -4,12 +4,13 @@ module Particle
|
|
4
4
|
|
5
5
|
# Domain model for one Particle device
|
6
6
|
class Device < Model
|
7
|
-
ID_REGEX =
|
7
|
+
ID_REGEX = /^\h{24}$/
|
8
8
|
PRODUCT_IDS = {
|
9
9
|
0 => "Core".freeze,
|
10
10
|
6 => "Photon".freeze,
|
11
11
|
8 => "P1".freeze,
|
12
|
-
10 => "Electron".freeze
|
12
|
+
10 => "Electron".freeze,
|
13
|
+
31 => "Raspberry Pi".freeze
|
13
14
|
}
|
14
15
|
|
15
16
|
def initialize(client, attributes)
|
@@ -183,7 +184,11 @@ module Particle
|
|
183
184
|
end
|
184
185
|
|
185
186
|
def self.provision_path
|
186
|
-
"v1/
|
187
|
+
"v1/devices"
|
188
|
+
end
|
189
|
+
|
190
|
+
def self.update_keys_path
|
191
|
+
"/v1/provisioning/x"
|
187
192
|
end
|
188
193
|
|
189
194
|
def path
|
data/lib/particle/error.rb
CHANGED
@@ -27,10 +27,12 @@ module Particle
|
|
27
27
|
|
28
28
|
def initialize(response=nil)
|
29
29
|
@response = response
|
30
|
+
@short_message = build_short_message
|
30
31
|
super(build_error_message)
|
31
32
|
end
|
32
33
|
|
33
34
|
attr_reader :response
|
35
|
+
attr_reader :short_message
|
34
36
|
|
35
37
|
private
|
36
38
|
|
@@ -42,13 +44,23 @@ module Particle
|
|
42
44
|
end
|
43
45
|
end
|
44
46
|
|
47
|
+
def build_short_message
|
48
|
+
if response && response[:body] && response[:body][:error]
|
49
|
+
response[:body][:error]
|
50
|
+
elsif response && response[:body] && response[:body][:errors]
|
51
|
+
response[:body][:errors].join ", "
|
52
|
+
else
|
53
|
+
self.class.name
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
45
57
|
def build_error_message
|
46
|
-
return nil if
|
58
|
+
return nil if response.nil?
|
47
59
|
|
48
|
-
message = "#{
|
49
|
-
message << redact_url(
|
50
|
-
message << "#{
|
51
|
-
message << "#{
|
60
|
+
message = "#{response[:method].to_s.upcase} "
|
61
|
+
message << redact_url(response[:url].to_s) + ": "
|
62
|
+
message << "#{response[:status]} - "
|
63
|
+
message << "#{response[:body]}"
|
52
64
|
message
|
53
65
|
end
|
54
66
|
|
data/lib/particle/version.rb
CHANGED
data/particlerb.gemspec
CHANGED
@@ -28,6 +28,7 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.add_development_dependency 'listen', '~> 3.0.8'
|
29
29
|
spec.add_development_dependency 'vcr', '~> 2.9'
|
30
30
|
spec.add_development_dependency 'webmock', '~> 1.21'
|
31
|
+
spec.add_development_dependency 'addressable', '~> 2.4.0'
|
31
32
|
spec.add_development_dependency 'multi_json', '~> 1.11'
|
32
33
|
spec.add_development_dependency 'highline', '~> 1.7'
|
33
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: particlerb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julien Vanier
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -164,6 +164,20 @@ dependencies:
|
|
164
164
|
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '1.21'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: addressable
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 2.4.0
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 2.4.0
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
182
|
name: multi_json
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -246,7 +260,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
246
260
|
version: 1.3.5
|
247
261
|
requirements: []
|
248
262
|
rubyforge_project:
|
249
|
-
rubygems_version: 2.
|
263
|
+
rubygems_version: 2.4.5.1
|
250
264
|
signing_key:
|
251
265
|
specification_version: 4
|
252
266
|
summary: Ruby client for the Particle.io Cloud API
|