m2x 2.3.0 → 2.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/m2x.rb +1 -1
- data/lib/m2x/client.rb +20 -0
- data/lib/m2x/collection.rb +2 -0
- data/lib/m2x/command.rb +61 -0
- data/lib/m2x/device.rb +47 -0
- data/lib/m2x/distribution.rb +2 -0
- data/lib/m2x/metadata.rb +42 -0
- data/lib/m2x/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70f17c0238e0ffa54350a2b51b30cb03baaa13ce
|
4
|
+
data.tar.gz: cb0d4e1d429046af177c04941723c9eea2fb1b33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c5a6aa82d13e07f0f88d1cc69f50d14bc002ed58a284f62cc256fbf768fcc310f6713e5b81f6e2ae66708e864a82433095d5794bcb715d6fc715814b46972f8
|
7
|
+
data.tar.gz: b520c2455cf1d4059515e8e93c71af3b1da9cb41c24e94910db81df1e2385f3adec25ba560a9a335dc17ad28679e0aa524c71cb73c56f2603fcbd936a4c4f7a4
|
data/lib/m2x.rb
CHANGED
@@ -5,9 +5,9 @@ require_relative "m2x/response"
|
|
5
5
|
require_relative "m2x/client"
|
6
6
|
|
7
7
|
require_relative "m2x/collection"
|
8
|
+
require_relative "m2x/command"
|
8
9
|
require_relative "m2x/device"
|
9
10
|
require_relative "m2x/distribution"
|
10
11
|
require_relative "m2x/job"
|
11
12
|
require_relative "m2x/key"
|
12
13
|
require_relative "m2x/stream"
|
13
|
-
|
data/lib/m2x/client.rb
CHANGED
@@ -57,6 +57,26 @@ class M2X::Client
|
|
57
57
|
M2X::Client::Collection.list(self, params)
|
58
58
|
end
|
59
59
|
|
60
|
+
# List Sent Commands
|
61
|
+
#
|
62
|
+
# See M2X::Client::Command.list for more details
|
63
|
+
def commands(params={})
|
64
|
+
M2X::Client::Command.list(self, params)
|
65
|
+
end
|
66
|
+
|
67
|
+
# View Command Details
|
68
|
+
#
|
69
|
+
# This method instantiates an instance of Command and calls `Command#view`
|
70
|
+
# method, returning the command instance with all its attributes initialized
|
71
|
+
def command(id)
|
72
|
+
M2X::Client::Command.new(self, "id" => id).tap(&:view)
|
73
|
+
end
|
74
|
+
|
75
|
+
# Send command
|
76
|
+
def send_command(params)
|
77
|
+
M2X::Client::Command.send!(self, params)
|
78
|
+
end
|
79
|
+
|
60
80
|
# Obtain a Device from M2X
|
61
81
|
#
|
62
82
|
# This method instantiates an instance of Device and calls `Device#view`
|
data/lib/m2x/collection.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
require_relative "./resource"
|
2
|
+
require_relative "./metadata"
|
2
3
|
|
3
4
|
# Wrapper for AT&T M2X Collections API
|
4
5
|
# https://m2x.att.com/developer/documentation/v2/collections
|
5
6
|
class M2X::Client::Collection < M2X::Client::Resource
|
7
|
+
include M2X::Client::Metadata
|
6
8
|
|
7
9
|
PATH = "/collections"
|
8
10
|
|
data/lib/m2x/command.rb
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
# Wrapper for AT&T M2X Commands API
|
2
|
+
# https://m2x.att.com/developer/documentation/v2/commands
|
3
|
+
class M2X::Client::Command
|
4
|
+
extend Forwardable
|
5
|
+
|
6
|
+
PATH = "/commands"
|
7
|
+
|
8
|
+
attr_reader :attributes
|
9
|
+
|
10
|
+
def_delegator :@attributes, :[]
|
11
|
+
|
12
|
+
def initialize(client, attributes)
|
13
|
+
@client = client
|
14
|
+
@attributes = attributes
|
15
|
+
end
|
16
|
+
|
17
|
+
def path
|
18
|
+
@path ||= "#{ PATH }/#{ URI.encode(@attributes.fetch("id")) }"
|
19
|
+
end
|
20
|
+
|
21
|
+
# View Command Details
|
22
|
+
#
|
23
|
+
# Get details of a sent command including the delivery information for all
|
24
|
+
# devices that were targetted by the command at the time it was sent.
|
25
|
+
#
|
26
|
+
# https://m2x.att.com/developer/documentation/v2/commands#View-Command-Details
|
27
|
+
def view
|
28
|
+
res = @client.get(path)
|
29
|
+
|
30
|
+
@attributes = res.json if res.success?
|
31
|
+
end
|
32
|
+
|
33
|
+
def inspect
|
34
|
+
"<#{self.class.name}: #{attributes.inspect}>"
|
35
|
+
end
|
36
|
+
|
37
|
+
class << self
|
38
|
+
# List Sent Commands
|
39
|
+
#
|
40
|
+
# Retrieve the list of recent commands sent by the current user
|
41
|
+
# (as given by the API key).
|
42
|
+
#
|
43
|
+
# https://m2x.att.com/developer/documentation/v2/commands#List-Sent-Commands
|
44
|
+
def list(client, params={})
|
45
|
+
res = client.get(PATH, params)
|
46
|
+
|
47
|
+
res.json["commands"].map { |atts| new(client, atts) } if res.success?
|
48
|
+
end
|
49
|
+
|
50
|
+
# Send Command
|
51
|
+
#
|
52
|
+
# Send a command with the given name to the given target devices.
|
53
|
+
# The name should be a custom string defined by the user and understood by
|
54
|
+
# the device.
|
55
|
+
#
|
56
|
+
# https://m2x.att.com/developer/documentation/v2/commands#Send-Command
|
57
|
+
def send!(client, params)
|
58
|
+
client.post(PATH, nil, params, "Content-Type" => "application/json")
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
data/lib/m2x/device.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
require_relative "./resource"
|
2
|
+
require_relative "./metadata"
|
2
3
|
|
3
4
|
# Wrapper for AT&T M2X Device API
|
4
5
|
# https://m2x.att.com/developer/documentation/v2/device
|
5
6
|
class M2X::Client::Device < M2X::Client::Resource
|
7
|
+
include M2X::Client::Metadata
|
6
8
|
|
7
9
|
PATH = "/devices"
|
8
10
|
|
@@ -81,6 +83,15 @@ class M2X::Client::Device < M2X::Client::Resource
|
|
81
83
|
@client.get("#{path}/location")
|
82
84
|
end
|
83
85
|
|
86
|
+
# Read Device Location History
|
87
|
+
#
|
88
|
+
# Get location history details of an existing Device. Returns the 30 most
|
89
|
+
# recently logged locations by default.
|
90
|
+
# https://m2x.att.com/developer/documentation/v2/device#Read-Device-Location-History
|
91
|
+
def location_history(params = {})
|
92
|
+
@client.get("#{path}/location/waypoints", params)
|
93
|
+
end
|
94
|
+
|
84
95
|
# Update the current location of the specified device.
|
85
96
|
#
|
86
97
|
# https://m2x.att.com/developer/documentation/v2/device#Update-Device-Location
|
@@ -209,4 +220,40 @@ class M2X::Client::Device < M2X::Client::Resource
|
|
209
220
|
def create_key(params)
|
210
221
|
::M2X::Client::Key.create!(@client, params.merge(device: self["id"]))
|
211
222
|
end
|
223
|
+
|
224
|
+
# Device's List of Received Commands
|
225
|
+
#
|
226
|
+
# Retrieve the list of recent commands sent to the current device (as given by the API key).
|
227
|
+
#
|
228
|
+
# https://m2x.att.com/developer/documentation/v2/commands#Device-s-List-of-Received-Commands
|
229
|
+
def commands(params = {})
|
230
|
+
res = @client.get("#{path}/commands", params)
|
231
|
+
|
232
|
+
res.json["commands"].map { |atts| M2X::Client::Command.new(@client, atts) } if res.success?
|
233
|
+
end
|
234
|
+
|
235
|
+
# Device's View of Command Details
|
236
|
+
#
|
237
|
+
# Get details of a received command including the delivery information for this device.
|
238
|
+
#
|
239
|
+
# https://m2x.att.com/developer/documentation/v2/commands#Device-s-View-of-Command-Details
|
240
|
+
def command(id)
|
241
|
+
res = @client.get("#{path}/commands/#{id}")
|
242
|
+
|
243
|
+
M2X::Client::Command.new(@client, res.json) if res.success?
|
244
|
+
end
|
245
|
+
|
246
|
+
# Process a command
|
247
|
+
#
|
248
|
+
# https://m2x.att.com/developer/documentation/v2/commands#Device-Marks-a-Command-as-Processed
|
249
|
+
def process_command(id, params = {})
|
250
|
+
@client.post("#{path}/commands/#{id}/process", nil, params)
|
251
|
+
end
|
252
|
+
|
253
|
+
# Reject a command
|
254
|
+
#
|
255
|
+
# https://m2x.att.com/developer/documentation/v2/commands#Device-Marks-a-Command-as-Rejected
|
256
|
+
def reject_command(id, params = {})
|
257
|
+
@client.post("#{path}/commands/#{id}/reject", nil, params)
|
258
|
+
end
|
212
259
|
end
|
data/lib/m2x/distribution.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
require_relative "./resource"
|
2
|
+
require_relative "./metadata"
|
2
3
|
|
3
4
|
# Wrapper for AT&T M2X Distribution API
|
4
5
|
# https://m2x.att.com/developer/documentation/v2/distribution
|
5
6
|
class M2X::Client::Distribution < M2X::Client::Resource
|
7
|
+
include M2X::Client::Metadata
|
6
8
|
|
7
9
|
PATH = "/distributions"
|
8
10
|
|
data/lib/m2x/metadata.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
module M2X::Client::Metadata
|
2
|
+
|
3
|
+
# Read an object's metadata
|
4
|
+
#
|
5
|
+
# https://m2x.att.com/developer/documentation/v2/device#Read-Device-Metadata
|
6
|
+
# https://m2x.att.com/developer/documentation/v2/distribution#Read-Distribution-Metadata
|
7
|
+
# https://m2x.att.com/developer/documentation/v2/collections#Read-Collection-Metadata
|
8
|
+
def read_metadata
|
9
|
+
@client.get(metadata_path)
|
10
|
+
end
|
11
|
+
|
12
|
+
# Read a single field of an object's metadata
|
13
|
+
#
|
14
|
+
# https://m2x.att.com/developer/documentation/v2/device#Read-Device-Metadata-Field
|
15
|
+
# https://m2x.att.com/developer/documentation/v2/distribution#Read-Distribution-Metadata-Field
|
16
|
+
# https://m2x.att.com/developer/documentation/v2/collections#Read-Collection-Metadata-Field
|
17
|
+
def read_metadata_field(field_name)
|
18
|
+
@client.get("#{metadata_path}/#{field_name}")
|
19
|
+
end
|
20
|
+
|
21
|
+
# Update an object's metadata
|
22
|
+
#
|
23
|
+
# https://m2x.att.com/developer/documentation/v2/device#Update-Device-Metadata
|
24
|
+
# https://m2x.att.com/developer/documentation/v2/distribution#Update-Distribution-Metadata
|
25
|
+
# https://m2x.att.com/developer/documentation/v2/collections#Update-Collection-Metadata
|
26
|
+
def update_metadata(params)
|
27
|
+
@client.put(metadata_path, nil, params, "Content-Type" => "application/json")
|
28
|
+
end
|
29
|
+
|
30
|
+
# Update a single field of an object's metadata
|
31
|
+
#
|
32
|
+
# https://m2x.att.com/developer/documentation/v2/device#Update-Device-Metadata-Field
|
33
|
+
# https://m2x.att.com/developer/documentation/v2/distribution#Update-Distribution-Metadata-Field
|
34
|
+
# https://m2x.att.com/developer/documentation/v2/collections#Update-Collection-Metadata-Field
|
35
|
+
def update_metadata_field(field_name, value)
|
36
|
+
@client.put("#{metadata_path}/#{field_name}", nil, { value: value }, "Content-Type" => "application/json")
|
37
|
+
end
|
38
|
+
|
39
|
+
def metadata_path
|
40
|
+
"#{path}/metadata"
|
41
|
+
end
|
42
|
+
end
|
data/lib/m2x/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: m2x
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Leandro López
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2015-
|
13
|
+
date: 2015-12-23 00:00:00.000000000 Z
|
14
14
|
dependencies: []
|
15
15
|
description: AT&T’s M2X is a cloud-based fully managed data storage service for network
|
16
16
|
connected machine-to-machine (M2M) devices. From trucks and turbines to vending
|
@@ -30,10 +30,12 @@ files:
|
|
30
30
|
- lib/m2x/cacert.pem
|
31
31
|
- lib/m2x/client.rb
|
32
32
|
- lib/m2x/collection.rb
|
33
|
+
- lib/m2x/command.rb
|
33
34
|
- lib/m2x/device.rb
|
34
35
|
- lib/m2x/distribution.rb
|
35
36
|
- lib/m2x/job.rb
|
36
37
|
- lib/m2x/key.rb
|
38
|
+
- lib/m2x/metadata.rb
|
37
39
|
- lib/m2x/resource.rb
|
38
40
|
- lib/m2x/response.rb
|
39
41
|
- lib/m2x/stream.rb
|
@@ -64,4 +66,3 @@ signing_key:
|
|
64
66
|
specification_version: 4
|
65
67
|
summary: Ruby client for AT&T M2X
|
66
68
|
test_files: []
|
67
|
-
has_rdoc:
|