m2x 0.0.3 → 0.0.4

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 25f278330a6a934500906b8e3ef75ca211c22b0b
4
+ data.tar.gz: 8fd69942d389699515c974650e8161748f2121f1
5
+ SHA512:
6
+ metadata.gz: b1fc80acf6e77326e23eff2912a7d3893996cfe4cf2190ac1d61a57ca2e9347c04e33d98077114678cf0c16629fab989b4cddfb5f83f20051f0a0c91d4d717d2
7
+ data.tar.gz: ae5f1b59ee38e50d98585fd22cd38bfdf037e27b10c6ca32797f401d5910b1ee34d01741bad74e20e4e08f12b598643f962a5368e0448a1ef1b63975af890785
data/README.md CHANGED
@@ -4,6 +4,15 @@
4
4
 
5
5
  This gem aims to provide a simple wrapper to interact with [AT&T M2X API](https://m2x.att.com/developer/documentation/overview). Refer to the [Glossary of Terms](https://m2x.att.com/developer/documentation/glossary) to understand the nomenclature used through this documentation.
6
6
 
7
+
8
+ Getting Started
9
+ ==========================
10
+ 1. Signup for an [M2X Account](https://m2x.att.com/signup).
11
+ 2. Obtain your _Master Key_ from the Master Keys tab of your [Account Settings](https://m2x.att.com/account) screen.
12
+ 2. Create your first [Data Source Blueprint](https://m2x.att.com/blueprints) and copy its _Feed ID_.
13
+ 3. Review the [M2X API Documentation](https://m2x.att.com/developer/documentation/overview).
14
+
15
+
7
16
  ## Example Usage
8
17
 
9
18
  In order to be able to use this gem you will need an [AT&T M2X](https://m2x.att.com/) API key and a Data Source ID. If you don't have an API key, create an account and, once registered and with your account activated, create a new [Data Source Blueprint](https://m2x.att.com/blueprints), and copy the `Feed ID` and `API Key` values. The following script will send your CPU load average to three different streams named `load_1m`, `load_5m` and `load_15`. Check that there's no need to create a stream in order to write values into it:
data/lib/m2x.rb CHANGED
@@ -27,4 +27,16 @@ class M2X
27
27
  def feeds
28
28
  @feeds ||= ::M2X::Feeds.new(client)
29
29
  end
30
+
31
+ def blueprints
32
+ @blueprints ||= ::M2X::Blueprints.new(client)
33
+ end
34
+
35
+ def datasources
36
+ @datasources ||= ::M2X::Datasources.new(client)
37
+ end
38
+
39
+ def batches
40
+ @batches ||= ::M2X::Batches.new(client)
41
+ end
30
42
  end
@@ -0,0 +1,79 @@
1
+ class M2X
2
+
3
+ # Wrapper for AT&T M2X Batches API
4
+ #
5
+ # See https://m2x.att.com/developer/documentation/datasource
6
+ class Batches
7
+ # Creates a new M2X Batches API Wrapper
8
+ def initialize(client)
9
+ @client = client
10
+ end
11
+
12
+ # List/search all the data source batches that belong to the user
13
+ # associated with the M2X API key supplied when initializing M2X
14
+ #
15
+ # The list of data source batches can be filtered by using one or
16
+ # more of the following optional parameters:
17
+ #
18
+ # * `q` text to search, matching the name and description.
19
+ # * `tags` a comma separated list of tags.
20
+ # * `limit` how many results per page.
21
+ # * `page` the specific results page, starting by 1.
22
+ # * `latitude` and `longitude` for searching feeds geographically.
23
+ # * `distance` numeric value in `distance_unit`.
24
+ # * `distance_unit` either `miles`, `mi` or `km`.
25
+ def list(params={})
26
+ @client.get("/batches", params)
27
+ end
28
+ alias_method :search, :list
29
+
30
+ # Create a new data source batch
31
+ #
32
+ # Accepts the following parameters as members of a hash:
33
+ #
34
+ # * `name` the name of the new data source.
35
+ # * `visibility` either "public" or "private".
36
+ # * `description` containing a longer description (optional).
37
+ # * `tags` a comma separated string of tags (optional).
38
+ def create(params={})
39
+ @client.post("/batches", nil, extras.merge(name: name))
40
+ end
41
+
42
+ # Retrieve information about an existing data source batch
43
+ def view(id)
44
+ @client.get("/batches/#{URI.encode(id)}")
45
+ end
46
+
47
+ # Update an existing data source batch details
48
+ #
49
+ # Accepts the following parameters as members of a hash:
50
+ #
51
+ # * `name` the name of the new data source.
52
+ # * `visibility` either "public" or "private".
53
+ # * `description` containing a longer description (optional).
54
+ # * `tags` a comma separated string of tags (optional).
55
+ def update(id, params={})
56
+ @client.put("/batches/#{URI.encode(id)}", nil, extras.merge(name: name))
57
+ end
58
+
59
+ # List/search all data sources in the batch
60
+ #
61
+ # See Datasources#search for search parameters description.
62
+ def datasources(id, params={})
63
+ @client.get("/batches/#{URI.encode(id)}/datasources", params)
64
+ end
65
+
66
+ # Add a new data source to an existing batch
67
+ #
68
+ # Accepts a `serial` parameter, that must be a unique identifier
69
+ # within this batch.
70
+ def add_datasource(id, serial)
71
+ @client.post("/batches/#{URI.encode(id)}/datasources", nil, { serial: serial })
72
+ end
73
+
74
+ # Delete an existing data source batch
75
+ def delete(id)
76
+ @client.delete("/batches/#{URI.encode(id)}")
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,64 @@
1
+ class M2X
2
+
3
+ # Wrapper for AT&T M2X Blueprints API
4
+ #
5
+ # See https://m2x.att.com/developer/documentation/datasource
6
+ class Blueprints
7
+ # Creates a new M2X Blueprints API Wrapper
8
+ def initialize(client)
9
+ @client = client
10
+ end
11
+
12
+ # List/search all the blueprints that belong to the user associated
13
+ # with the M2X API key supplied when initializing M2X
14
+ #
15
+ # The list of blueprints can be filtered by using one or more of the
16
+ # following optional parameters:
17
+ #
18
+ # * `q` text to search, matching the name and description.
19
+ # * `tags` a comma separated list of tags.
20
+ # * `limit` how many results per page.
21
+ # * `page` the specific results page, starting by 1.
22
+ # * `latitude` and `longitude` for searching feeds geographically.
23
+ # * `distance` numeric value in `distance_unit`.
24
+ # * `distance_unit` either `miles`, `mi` or `km`.
25
+ def list(params={})
26
+ @client.get("/blueprints", params)
27
+ end
28
+ alias_method :search, :list
29
+
30
+ # Create a new data source blueprint
31
+ #
32
+ # Accepts the following parameters as members of a hash:
33
+ #
34
+ # * `name` the name of the new data source blueprint.
35
+ # * `visibility` either "public" or "private".
36
+ # * `description` containing a longer description (optional).
37
+ # * `tags` a comma separated string of tags (optional).
38
+ def create(params={})
39
+ @client.post("/blueprints", nil, extras.merge(name: name))
40
+ end
41
+
42
+ # Retrieve information about an existing data source blueprint
43
+ def view(id)
44
+ @client.get("/blueprints/#{URI.encode(id)}")
45
+ end
46
+
47
+ # Update an existing data source blueprint's information
48
+ #
49
+ # Accepts the following parameters as members of a hash:
50
+ #
51
+ # * `name` the name of the new data source blueprint.
52
+ # * `visibility` either "public" or "private".
53
+ # * `description` containing a longer description (optional).
54
+ # * `tags` a comma separated string of tags (optional).
55
+ def update(id, params={})
56
+ @client.put("/blueprints/#{URI.encode(id)}", nil, extras.merge(name: name))
57
+ end
58
+
59
+ # Delete an existing data source blueprint
60
+ def delete(id)
61
+ @client.delete("/blueprints/#{URI.encode(id)}")
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,64 @@
1
+ class M2X
2
+
3
+ # Wrapper for AT&T M2X Data Sources API
4
+ #
5
+ # See https://m2x.att.com/developer/documentation/datasource
6
+ class Datasources
7
+ # Creates a new M2X Data Sources API Wrapper
8
+ def initialize(client)
9
+ @client = client
10
+ end
11
+
12
+ # List/search all the datasources that belong to the user associated
13
+ # with the M2X API key supplied when initializing M2X
14
+ #
15
+ # The list of data sources can be filtered by using one or more of the
16
+ # following optional parameters:
17
+ #
18
+ # * `q` text to search, matching the name and description.
19
+ # * `tags` a comma separated list of tags.
20
+ # * `limit` how many results per page.
21
+ # * `page` the specific results page, starting by 1.
22
+ # * `latitude` and `longitude` for searching feeds geographically.
23
+ # * `distance` numeric value in `distance_unit`.
24
+ # * `distance_unit` either `miles`, `mi` or `km`.
25
+ def list(params={})
26
+ @client.get("/datasources", params)
27
+ end
28
+ alias_method :search, :list
29
+
30
+ # Create a new data source
31
+ #
32
+ # Accepts the following parameters as members of a hash:
33
+ #
34
+ # * `name` the name of the new data source.
35
+ # * `visibility` either "public" or "private".
36
+ # * `description` containing a longer description (optional).
37
+ # * `tags` a comma separated string of tags (optional).
38
+ def create(params={})
39
+ @client.post("/datasources", nil, extras.merge(name: name))
40
+ end
41
+
42
+ # Retrieve information about an existing data source
43
+ def view(id)
44
+ @client.get("/datasources/#{URI.encode(id)}")
45
+ end
46
+
47
+ # Update an existing data source details
48
+ #
49
+ # Accepts the following parameters as members of a hash:
50
+ #
51
+ # * `name` the name of the new data source.
52
+ # * `visibility` either "public" or "private".
53
+ # * `description` containing a longer description (optional).
54
+ # * `tags` a comma separated string of tags (optional).
55
+ def update(id, params={})
56
+ @client.put("/datasources/#{URI.encode(id)}", nil, extras.merge(name: name))
57
+ end
58
+
59
+ # Delete an existing data source
60
+ def delete(id)
61
+ @client.delete("/datasources/#{URI.encode(id)}")
62
+ end
63
+ end
64
+ end
data/lib/m2x/feeds.rb CHANGED
@@ -10,11 +10,24 @@ class M2X
10
10
  @client = client
11
11
  end
12
12
 
13
- # List all the feeds that belong to the user associated with the
14
- # M2X API key supplied when initializing M2X
15
- def list
16
- @client.get("/feeds")
13
+ # List/search all the feeds that belong to the user associated
14
+ # with the M2X API key supplied when initializing M2X
15
+ #
16
+ # The list of feeds can be filtered by using one or more of the
17
+ # following optional parameters:
18
+ #
19
+ # * `q` text to search, matching the name and description.
20
+ # * `type` one of `bleuprint`, `batch` and `datasource`.
21
+ # * `tags` a comma separated list of tags.
22
+ # * `limit` how many results per page.
23
+ # * `page` the specific results page, starting by 1.
24
+ # * `latitude` and `longitude` for searching feeds geographically.
25
+ # * `distance` numeric value in `distance_unit`.
26
+ # * `distance_unit` either `miles`, `mi` or `km`.
27
+ def list(params={})
28
+ @client.get("/feeds", params)
17
29
  end
30
+ alias_method :search, :list
18
31
 
19
32
  # Return the details of the supplied feed
20
33
  def view(id)
@@ -49,9 +62,22 @@ class M2X
49
62
  @client.get("/feeds/#{URI.encode(id)}/streams/#{URI.encode(name)}")
50
63
  end
51
64
 
52
- # Return a list with the latest values from a stream
53
- def stream_values(id, name)
54
- @client.get("/feeds/#{URI.encode(id)}/streams/#{URI.encode(name)}/values")
65
+ # List values from an existing data stream associated with a
66
+ # specific feed, sorted in reverse chronological order (most
67
+ # recent values first).
68
+ #
69
+ # The values can be filtered by using one or more of the following
70
+ # optional parameters:
71
+ #
72
+ # * `start` An ISO 8601 timestamp specifying the start of the date
73
+ # * range to be considered.
74
+ #
75
+ # * `end` An ISO 8601 timestamp specifying the end of the date
76
+ # * range to be considered.
77
+ #
78
+ # * `limit` Maximum number of values to return.
79
+ def stream_values(id, name, params={})
80
+ @client.get("/feeds/#{URI.encode(id)}/streams/#{URI.encode(name)}/values", params)
55
81
  end
56
82
 
57
83
  # Update stream's properties
@@ -86,6 +112,28 @@ class M2X
86
112
  keys_api.update(key, params.merge(feed: id))
87
113
  end
88
114
 
115
+ # Post multiple values to multiple streams
116
+ #
117
+ # This method allows posting multiple values to multiple streams
118
+ # belonging to a feed. All the streams should be created before
119
+ # posting values using this method. The `values` parameters is a
120
+ # hash with the following format:
121
+ #
122
+ # {
123
+ # "stream-name-1": [
124
+ # { "at": <Time in ISO8601>, "value": x },
125
+ # { "value": y }
126
+ # ],
127
+ # "stream-name-2": [ ... ]
128
+ # }
129
+ #
130
+ # If the `at` attribute is missing the the current time of the
131
+ # server, in UTC, will be used.
132
+ def post_multiple(id, values)
133
+ params = { values: values }
134
+ @client.post("/feeds/#{URI.encode(id)}", nil, params, "Content-Type" => "application/json")
135
+ end
136
+
89
137
  private
90
138
 
91
139
  def keys_api
data/lib/m2x/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  class M2X
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: m2x
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
5
- prerelease:
4
+ version: 0.0.4
6
5
  platform: ruby
7
6
  authors:
8
7
  - Leandro López
@@ -10,7 +9,7 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2013-10-31 00:00:00.000000000 Z
12
+ date: 2013-11-15 00:00:00.000000000 Z
14
13
  dependencies: []
15
14
  description: AT&T’s M2X is a cloud-based fully managed data storage service for network
16
15
  connected machine-to-machine (M2M) devices. From trucks and turbines to vending
@@ -25,7 +24,10 @@ extra_rdoc_files: []
25
24
  files:
26
25
  - LICENSE
27
26
  - README.md
27
+ - lib/m2x/batches.rb
28
+ - lib/m2x/blueprints.rb
28
29
  - lib/m2x/client.rb
30
+ - lib/m2x/datasources.rb
29
31
  - lib/m2x/feeds.rb
30
32
  - lib/m2x/keys.rb
31
33
  - lib/m2x/version.rb
@@ -34,26 +36,25 @@ files:
34
36
  homepage: http://github.com/attm2x/m2x-ruby
35
37
  licenses:
36
38
  - MIT
39
+ metadata: {}
37
40
  post_install_message:
38
41
  rdoc_options: []
39
42
  require_paths:
40
43
  - lib
41
44
  required_ruby_version: !ruby/object:Gem::Requirement
42
- none: false
43
45
  requirements:
44
- - - ! '>='
46
+ - - '>='
45
47
  - !ruby/object:Gem::Version
46
48
  version: '0'
47
49
  required_rubygems_version: !ruby/object:Gem::Requirement
48
- none: false
49
50
  requirements:
50
- - - ! '>='
51
+ - - '>='
51
52
  - !ruby/object:Gem::Version
52
53
  version: '0'
53
54
  requirements: []
54
55
  rubyforge_project:
55
- rubygems_version: 1.8.23
56
+ rubygems_version: 2.0.3
56
57
  signing_key:
57
- specification_version: 3
58
+ specification_version: 4
58
59
  summary: Ruby client for AT&T M2X
59
60
  test_files: []