cloud_connect 2.0.2 → 3.0.3
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.
- data/.gitignore +20 -3
- data/Gemfile +2 -1
- data/Gemfile.lock +42 -31
- data/README.md +28 -83
- data/Rakefile +7 -35
- data/cloud_connect.gemspec +27 -28
- data/lib/cloud_connect/authentication.rb +15 -0
- data/lib/cloud_connect/client/assets.rb +102 -0
- data/lib/cloud_connect/client/channels.rb +83 -16
- data/lib/cloud_connect/client/configurations.rb +54 -0
- data/lib/cloud_connect/client/custom_methods.rb +20 -0
- data/lib/cloud_connect/client/fields.rb +88 -15
- data/lib/cloud_connect/client/messages.rb +60 -48
- data/lib/cloud_connect/client/tracks.rb +46 -0
- data/lib/cloud_connect/client.rb +39 -53
- data/lib/cloud_connect/configuration.rb +60 -0
- data/lib/cloud_connect/connection.rb +49 -0
- data/lib/cloud_connect/error.rb +27 -5
- data/lib/cloud_connect/notification/notification.rb +78 -0
- data/lib/cloud_connect/notification.rb +43 -0
- data/lib/cloud_connect/request.rb +70 -0
- data/lib/cloud_connect/version.rb +1 -1
- data/lib/cloud_connect.rb +18 -35
- data/lib/faraday/response/raise_cloud_connect_error.rb +44 -0
- metadata +93 -45
- data/.yardopts +0 -7
- data/HISTORY.md +0 -33
- data/lib/cloud_connect/client/trackings.rb +0 -22
- data/lib/cloud_connect/client/units.rb +0 -77
- data/lib/cloud_connect/client/users.rb +0 -36
- data/lib/ext/hash.rb +0 -5
- data/lib/ext/module.rb +0 -59
- data/lib/ext/object.rb +0 -57
- data/lib/faraday/cookie_auth.rb +0 -21
- data/lib/faraday/raise_http_4xx.rb +0 -41
- data/lib/faraday/raise_http_5xx.rb +0 -27
data/.gitignore
CHANGED
@@ -1,6 +1,23 @@
|
|
1
|
-
pkg/*
|
2
1
|
*.gem
|
2
|
+
*.rbc
|
3
|
+
*.swp
|
4
|
+
*.tmproj
|
5
|
+
*~
|
6
|
+
.\#*
|
3
7
|
.bundle
|
8
|
+
.config
|
4
9
|
.yardoc
|
5
|
-
.
|
6
|
-
|
10
|
+
Gemfile.lock
|
11
|
+
InstalledFiles
|
12
|
+
\#*
|
13
|
+
_yardoc
|
14
|
+
coverage
|
15
|
+
doc/
|
16
|
+
lib/bundler/man
|
17
|
+
pkg
|
18
|
+
rdoc
|
19
|
+
spec/reports
|
20
|
+
test/tmp
|
21
|
+
test/version_tmp
|
22
|
+
tmp
|
23
|
+
tmtags
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,46 +1,57 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cloud_connect (
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
multi_json
|
4
|
+
cloud_connect (3.0.0)
|
5
|
+
addressable (~> 2.2)
|
6
|
+
faraday (~> 0.8)
|
7
|
+
faraday_middleware (~> 0.8)
|
8
|
+
hashie (~> 1.2)
|
9
|
+
multi_json
|
10
10
|
|
11
11
|
GEM
|
12
|
-
remote:
|
12
|
+
remote: https://rubygems.org/
|
13
13
|
specs:
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
14
|
+
addressable (2.3.2)
|
15
|
+
crack (0.3.1)
|
16
|
+
diff-lcs (1.1.3)
|
17
|
+
faraday (0.8.4)
|
18
|
+
multipart-post (~> 1.1)
|
19
|
+
faraday_middleware (0.9.0)
|
19
20
|
faraday (>= 0.7.4, < 0.9)
|
20
21
|
hashie (1.2.0)
|
21
|
-
json (1.
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
rspec-
|
29
|
-
|
30
|
-
rspec-
|
31
|
-
rspec-
|
32
|
-
|
33
|
-
|
34
|
-
rspec-mocks (
|
35
|
-
|
36
|
-
|
22
|
+
json (1.7.5)
|
23
|
+
maruku (0.6.1)
|
24
|
+
syntax (>= 1.0.0)
|
25
|
+
multi_json (1.3.7)
|
26
|
+
multipart-post (1.1.5)
|
27
|
+
rake (10.0.2)
|
28
|
+
rspec (2.12.0)
|
29
|
+
rspec-core (~> 2.12.0)
|
30
|
+
rspec-expectations (~> 2.12.0)
|
31
|
+
rspec-mocks (~> 2.12.0)
|
32
|
+
rspec-core (2.12.0)
|
33
|
+
rspec-expectations (2.12.0)
|
34
|
+
diff-lcs (~> 1.1.3)
|
35
|
+
rspec-mocks (2.12.0)
|
36
|
+
simplecov (0.7.1)
|
37
|
+
multi_json (~> 1.0)
|
38
|
+
simplecov-html (~> 0.7.1)
|
39
|
+
simplecov-html (0.7.1)
|
40
|
+
syntax (1.0.0)
|
41
|
+
webmock (1.9.0)
|
42
|
+
addressable (>= 2.2.7)
|
43
|
+
crack (>= 0.1.7)
|
44
|
+
yard (0.8.3)
|
37
45
|
|
38
46
|
PLATFORMS
|
39
47
|
ruby
|
40
48
|
|
41
49
|
DEPENDENCIES
|
42
|
-
bluecloth (>= 2.0)
|
43
|
-
bundler (>= 1.0.0)
|
44
50
|
cloud_connect!
|
45
|
-
|
51
|
+
json (~> 1.7)
|
52
|
+
maruku
|
53
|
+
rake
|
46
54
|
rspec
|
55
|
+
simplecov
|
56
|
+
webmock
|
57
|
+
yard
|
data/README.md
CHANGED
@@ -1,97 +1,42 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# CloudConnect
|
2
|
+
Simple Ruby wrapper for the CloudConnect v3 API.
|
3
3
|
|
4
|
-
|
4
|
+
## Installation
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
```bash
|
7
|
+
gem install cloud_connect
|
8
|
+
```
|
9
9
|
|
10
|
-
|
11
|
-
-----
|
10
|
+
## Documentation
|
12
11
|
|
13
|
-
|
14
|
-
require 'cloud_connect'
|
12
|
+
http://rdoc.info/gems/cloud_connect
|
15
13
|
|
16
|
-
|
14
|
+
## Authenticated Requests
|
17
15
|
|
18
|
-
|
16
|
+
### Setup a client with your token
|
19
17
|
|
20
|
-
|
18
|
+
```ruby
|
19
|
+
cc = CloudConnect::Client.new(:account => "demo", :token => "token")
|
20
|
+
cc.asset("imei")
|
21
|
+
```
|
21
22
|
|
22
|
-
|
23
|
-
config.username = 'user'
|
24
|
-
config.password = 'password'
|
25
|
-
config.account = 'test'
|
26
|
-
config.env = 'sandbox'
|
27
|
-
end
|
28
|
-
cloud_connect = CloudConnect.client.new
|
23
|
+
## Examples
|
29
24
|
|
30
|
-
###
|
25
|
+
### Show an asset
|
31
26
|
|
32
|
-
|
27
|
+
```ruby
|
28
|
+
cc.asset("imei")
|
29
|
+
=> #<Hashie::Mash imei="imei" name=nil serial=nil url="http://url.cloudconnect.io/api/v3/assets/imei">
|
30
|
+
```
|
33
31
|
|
34
|
-
###
|
32
|
+
### Show last messages for an asset
|
35
33
|
|
36
|
-
|
37
|
-
|
34
|
+
```ruby
|
35
|
+
cc.messages(asset:"imei")
|
36
|
+
```
|
38
37
|
|
39
|
-
|
40
|
-
cloud_connect.user
|
38
|
+
### Channels
|
41
39
|
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
cloud_connect.user(1)
|
46
|
-
|
47
|
-
Send a message to a unit
|
48
|
-
|
49
|
-
cloud_connect.send_message(1, 11, "Hello World!")
|
50
|
-
|
51
|
-
Get a unit's last known position
|
52
|
-
|
53
|
-
unit = cloud_connect.unit(3)
|
54
|
-
puts "#{unit.location.join(', ')} @ #{unit.time}"
|
55
|
-
|
56
|
-
We recommand you install the [yajl-ruby](http://github.com/brianmario/yajl-ruby) Gem
|
57
|
-
for improved performance over the default pure ruby JSON library.
|
58
|
-
|
59
|
-
Contributing
|
60
|
-
------------
|
61
|
-
In the spirit of [free software](http://www.fsf.org/licensing/essays/free-sw.html), **everyone** is encouraged to help improve this project.
|
62
|
-
|
63
|
-
Here are some ways *you* can contribute:
|
64
|
-
|
65
|
-
* by using alpha, beta, and prerelease versions
|
66
|
-
* by reporting bugs
|
67
|
-
* by suggesting new features
|
68
|
-
* by writing or editing documentation
|
69
|
-
* by writing specifications
|
70
|
-
* by writing code (**no patch is too small**: fix typos, add comments, clean up inconsistent whitespace)
|
71
|
-
* by refactoring code
|
72
|
-
* by closing [issues](http://github.com/mobile-devices/cloud_connect/issues)
|
73
|
-
* by reviewing patches
|
74
|
-
|
75
|
-
All contributors will be added to the [HISTORY](https://github.com/mobile-devices/cloud_connect/blob/master/HISTORY.md)
|
76
|
-
file and will receive the respect and gratitude of the community.
|
77
|
-
|
78
|
-
Submitting an Issue
|
79
|
-
-------------------
|
80
|
-
We use the [GitHub issue tracker](http://github.com/mobile-devices/cloud_connect/issues) to track bugs and
|
81
|
-
features. Before submitting a bug report or feature request, check to make sure it hasn't already
|
82
|
-
been submitted. You can indicate support for an existing issuse by voting it up. When submitting a
|
83
|
-
bug report, please include a [Gist](http://gist.github.com/) that includes a stack trace and any
|
84
|
-
details that may be necessary to reproduce the bug, including your gem version, Ruby version, and
|
85
|
-
operating system. Ideally, a bug report should include a pull request with failing specs.
|
86
|
-
|
87
|
-
Submitting a Pull Request
|
88
|
-
-------------------------
|
89
|
-
1. Fork the project.
|
90
|
-
2. Create a topic branch.
|
91
|
-
3. Implement your feature or bug fix.
|
92
|
-
4. Add documentation for your feature or bug fix.
|
93
|
-
5. Run <tt>bundle exec rake doc:yard</tt>. If your changes are not 100% documented, go back to step 4.
|
94
|
-
6. Add specs for your feature or bug fix.
|
95
|
-
7. Run <tt>bundle exec rake spec</tt>. If your changes are not 100% covered, go back to step 6.
|
96
|
-
8. Commit and push your changes.
|
97
|
-
9. Submit a pull request. Please do not include changes to the gemspec, version, or history file. (If you want to create your own version for some reason, please do so in a separate commit.)
|
40
|
+
```
|
41
|
+
cc.channels
|
42
|
+
```
|
data/Rakefile
CHANGED
@@ -1,47 +1,19 @@
|
|
1
1
|
require 'bundler'
|
2
2
|
Bundler::GemHelper.install_tasks
|
3
3
|
|
4
|
+
require 'rspec/core/rake_task'
|
5
|
+
RSpec::Core::RakeTask.new(:spec)
|
6
|
+
|
7
|
+
task :test => :spec
|
8
|
+
task :default => :spec
|
9
|
+
|
4
10
|
namespace :doc do
|
5
11
|
require 'yard'
|
6
12
|
YARD::Rake::YardocTask.new do |task|
|
7
|
-
task.files = ['
|
13
|
+
task.files = ['README.md', 'LICENSE.md', 'lib/**/*.rb']
|
8
14
|
task.options = [
|
9
|
-
'--protected',
|
10
15
|
'--output-dir', 'doc/yard',
|
11
|
-
'--tag', 'format:Supported formats',
|
12
|
-
'--tag', 'authenticated:Requires Authentication',
|
13
|
-
'--tag', 'rate_limited:Rate Limited',
|
14
16
|
'--markup', 'markdown',
|
15
17
|
]
|
16
18
|
end
|
17
19
|
end
|
18
|
-
|
19
|
-
task :irb do
|
20
|
-
$:.unshift File.join(File.dirname(__FILE__), *%w[.. lib])
|
21
|
-
require 'irb'
|
22
|
-
require 'bundler/setup'
|
23
|
-
require 'cloud_connect'
|
24
|
-
module IRB # :nodoc:
|
25
|
-
def self.start_session(binding)
|
26
|
-
unless @__initialized
|
27
|
-
args = ARGV
|
28
|
-
ARGV.replace(ARGV.dup)
|
29
|
-
IRB.setup(nil)
|
30
|
-
ARGV.replace(args)
|
31
|
-
@__initialized = true
|
32
|
-
end
|
33
|
-
|
34
|
-
ws = WorkSpace.new(binding)
|
35
|
-
irb = Irb.new(ws)
|
36
|
-
|
37
|
-
@CONF[:IRB_RC].call(irb.context) if @CONF[:IRB_RC]
|
38
|
-
@CONF[:MAIN_CONTEXT] = irb.context
|
39
|
-
|
40
|
-
catch(:IRB_EXIT) do
|
41
|
-
irb.eval_input
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
IRB.start_session(binding)
|
46
|
-
end
|
47
|
-
end
|
data/cloud_connect.gemspec
CHANGED
@@ -1,31 +1,30 @@
|
|
1
|
-
|
1
|
+
# encoding: utf-8
|
2
|
+
require File.expand_path('../lib/cloud_connect/version', __FILE__)
|
2
3
|
|
3
|
-
Gem::Specification.new do |
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
4
|
+
Gem::Specification.new do |gem|
|
5
|
+
gem.add_dependency 'addressable', '~> 2.2'
|
6
|
+
gem.add_dependency 'faraday', '~> 0.8'
|
7
|
+
gem.add_dependency 'faraday_middleware', '~> 0.8'
|
8
|
+
gem.add_dependency 'hashie', '~> 1.2'
|
9
|
+
gem.add_dependency 'multi_json'
|
10
|
+
gem.add_development_dependency 'json', '~> 1.7'
|
11
|
+
gem.add_development_dependency 'maruku'
|
12
|
+
gem.add_development_dependency 'rake'
|
13
|
+
gem.add_development_dependency 'rspec'
|
14
|
+
gem.add_development_dependency 'simplecov'
|
15
|
+
gem.add_development_dependency 'webmock'
|
16
|
+
gem.add_development_dependency 'yard'
|
17
|
+
gem.required_rubygems_version = Gem::Requirement.new('>= 1.3.6')
|
13
18
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
#s.add_development_dependency "yard", "~> 0.6"
|
26
|
-
s.add_development_dependency "rspec"
|
27
|
-
|
28
|
-
s.files = `git ls-files`.split("\n")
|
29
|
-
s.executables = `git ls-files`.split("\n").map{|f| f =~ /^bin\/(.*)/ ? $1 : nil}.compact
|
30
|
-
s.require_path = 'lib'
|
19
|
+
gem.authors = ['Jean-Paul Bonnetouche']
|
20
|
+
gem.summary = 'Wrapper for the CloudConnect v3 API'
|
21
|
+
gem.description = 'Simple wrapper for the CloudConnect v3 API'
|
22
|
+
gem.email = ['jean-paul.bonnetouche@mobile-devices.fr']
|
23
|
+
gem.files = `git ls-files`.split("\n")
|
24
|
+
gem.homepage = 'https://github.com/mobile-devices/cloud_connect'
|
25
|
+
gem.name = 'cloud_connect'
|
26
|
+
gem.platform = Gem::Platform::RUBY
|
27
|
+
gem.require_paths = ['lib']
|
28
|
+
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
29
|
+
gem.version = CloudConnect::VERSION
|
31
30
|
end
|
@@ -0,0 +1,102 @@
|
|
1
|
+
module CloudConnect
|
2
|
+
class Client
|
3
|
+
module Assets
|
4
|
+
# Get an asset
|
5
|
+
#
|
6
|
+
# @param imei [String] IMEI of the asset
|
7
|
+
# @return [Asset] The asset you requested, if it exists
|
8
|
+
# @see http://wordsabout.it/mobile-devices/cloudconnect-user-documentation/cc-0003-assets
|
9
|
+
# @example Get asset 0123456789012345
|
10
|
+
# @client = CloudConnect::Client.new(:account => 'foor', :token => 'bar')
|
11
|
+
# @client.asset("0123456789012345")
|
12
|
+
def asset(imei, options={})
|
13
|
+
enhance( get("assets/#{imei}", options), with: AssetMethods )
|
14
|
+
end
|
15
|
+
|
16
|
+
# Search assets
|
17
|
+
#
|
18
|
+
# @param search_term [String] The term to search for
|
19
|
+
# @return [Array] A list of assets matching the search term
|
20
|
+
# @see http://wordsabout.it/mobile-devices/cloudconnect-user-documentation/cc-0003-assets
|
21
|
+
# @example Search for '123' in the assets
|
22
|
+
# @client = CloudConnect::Client.new(:account => 'foor', :token => 'bar')
|
23
|
+
# @client.search_assets
|
24
|
+
def search_assets(search_term, options={})
|
25
|
+
enhance( get("assets?q=#{search_term}", options), with: AssetMethods )
|
26
|
+
end
|
27
|
+
|
28
|
+
# Get assets
|
29
|
+
#
|
30
|
+
# @return [Array] A list of all assets
|
31
|
+
# @see http://wordsabout.it/mobile-devices/cloudconnect-user-documentation/cc-0003-assets
|
32
|
+
# @example List all assets
|
33
|
+
# @client = CloudConnect::Client.new(:account => 'foor', :token => 'bar')
|
34
|
+
# @client.list_assets
|
35
|
+
def assets(options={})
|
36
|
+
enhance( get("assets", options), with: AssetMethods )
|
37
|
+
end
|
38
|
+
alias :list_assets :assets
|
39
|
+
|
40
|
+
# Create an asset
|
41
|
+
#
|
42
|
+
# @param imei [String] IMEI of the asset
|
43
|
+
# @param options [Hash] A customizable set of options
|
44
|
+
# @options options [String] :name Name of the asset
|
45
|
+
# @options options [String] :serial Serial number of the asset
|
46
|
+
# @options options [String] :description Description of the asset
|
47
|
+
# @return [Asset] Your newly created asset
|
48
|
+
# @see http://wordsabout.it/mobile-devices/cloudconnect-user-documentation/cc-0003-assets#create_a_new_asset
|
49
|
+
# @example Create a new Asset
|
50
|
+
# @client = CloudConnect::CloudConnect.new(:account => 'foo', :token => 'bar')
|
51
|
+
# @client.create_asset("359551033822346", :name => 'General Lee', :serial => "50030000005322", :description => "The Dukes of Hazzard")
|
52
|
+
def create_asset(imei, options={})
|
53
|
+
enhance( post("assets", options.merge({:imei => imei})), with: AssetMethods )
|
54
|
+
end
|
55
|
+
|
56
|
+
# Update an asset
|
57
|
+
#
|
58
|
+
# @param imei [String] IMEI of the asset
|
59
|
+
# @param options [Hash] A customizable set of options
|
60
|
+
# @options options [String] :name Name of the asset
|
61
|
+
# @options options [String] :serial Serial number of the asset
|
62
|
+
# @options options [String] :description Description of the asset
|
63
|
+
# @return [Asset] Your newly updated asset
|
64
|
+
# @see http://wordsabout.it/mobile-devices/cloudconnect-user-documentation/cc-0003-assets#update_an_asset
|
65
|
+
# @example Update an Asset
|
66
|
+
# @client = CloudConnect::CloudConnect.new(:account => 'foo', :token => 'bar')
|
67
|
+
# @client.update_asset("359551033822346", :name => 'General Lee', :serial => "50030000005322", :description => "The Dukes of Hazzard")
|
68
|
+
def update_asset(imei, options={})
|
69
|
+
enhance( put("assets/#{imei}", options.merge({:imei => imei})), with: AssetMethods )
|
70
|
+
end
|
71
|
+
|
72
|
+
# Delete a single asset
|
73
|
+
#
|
74
|
+
# @param imei [String] IMEI fo the field
|
75
|
+
# @return [Response] A response object with status
|
76
|
+
# @see http://wordsabout.it/mobile-devices/cloudconnect-user-documentation/cc-0003-assets#delete_an_asset
|
77
|
+
# @example Delete the "359551033822346" asset
|
78
|
+
# @client = CloudConnect::CloudConnect.new(:account => 'foo', :token => 'bar')
|
79
|
+
# @client.delete_asset("359551033822346")
|
80
|
+
def delete_asset(imei, options={})
|
81
|
+
delete("assets/#{imei}", options, true)
|
82
|
+
end
|
83
|
+
|
84
|
+
module AssetMethods
|
85
|
+
extend CustomMethods
|
86
|
+
# Send a message to the unit
|
87
|
+
#
|
88
|
+
# @param channel [String] Channel for the message
|
89
|
+
# @param payload [String] Payload of the message to send
|
90
|
+
# @return [Message] The message
|
91
|
+
# @see http://wordsabout.it/mobile-devices/cloudconnect-user-documentation/cc-0005-messages#push_a_message_to_an_asset
|
92
|
+
def send_message(channel, payload, opts = {})
|
93
|
+
_client.send_message(imei, channel, payload, opts)
|
94
|
+
end
|
95
|
+
|
96
|
+
def messages(opts = {})
|
97
|
+
_client.messages(opts.merge asset: imei)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -1,22 +1,89 @@
|
|
1
1
|
module CloudConnect
|
2
|
-
|
2
|
+
class Client
|
3
|
+
module Channels
|
4
|
+
# Get a channel
|
5
|
+
#
|
6
|
+
# @param name [String] Name of the channel
|
7
|
+
# @return [Channel] The channel you requested, if it exists
|
8
|
+
# @see http://wordsabout.it/mobile-devices/cloudconnect-user-documentation/cc-0006-channels
|
9
|
+
# @example Get channel 0123456789012345
|
10
|
+
# @client = CloudConnect::Client.new(:account => 'foo', :token => 'bar')
|
11
|
+
# @client.channel("0123456789012345")
|
12
|
+
def channel(name, options={})
|
13
|
+
enhance( get("channels/#{name}", options), with: ChannelMethods )
|
14
|
+
end
|
3
15
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
16
|
+
# Search channels
|
17
|
+
#
|
18
|
+
# @param search_term [String] The term to search for
|
19
|
+
# @return [Array] A list of channels matching the search term
|
20
|
+
# @see http://wordsabout.it/mobile-devices/cloudconnect-user-documentation/cc-0006-channels
|
21
|
+
# @example Search for 'com.mdi.services.adminProtocol' in the channels
|
22
|
+
# @client = CloudConnect::Client.new(:account => 'foor', :token => 'bar')
|
23
|
+
# @client.search_channels
|
24
|
+
def search_channels(search_term, options={})
|
25
|
+
enhance( get("channels?q=#{search_term}", options), with: ChannelMethods )
|
26
|
+
end
|
27
|
+
|
28
|
+
# Get channels
|
29
|
+
#
|
30
|
+
# @return [Array] A list of all channels
|
31
|
+
# @see http://wordsabout.it/mobile-devices/cloudconnect-user-documentation/cc-0003-channels
|
32
|
+
# @example List all channels
|
33
|
+
# @client = CloudConnect::Client.new(:account => 'foo', :token => 'bar')
|
34
|
+
# @client.channels
|
35
|
+
def channels(options={})
|
36
|
+
enhance( get("channels", options), with: ChannelMethods )
|
37
|
+
end
|
38
|
+
alias :list_channels :channels
|
39
|
+
|
40
|
+
# Create a channel
|
41
|
+
#
|
42
|
+
# @param name [String] Name of the channel
|
43
|
+
# @param options [Hash] A customizable set of options
|
44
|
+
# @options options [Integer] :msgttl The delay in seconds before the message is considered expired (and will not be sent)
|
45
|
+
# @options options [Integer] :unitack The delay in seconds for acknowledgment by the asset (after the message has been sent)
|
46
|
+
# @options options [Integer] :serverack The delay in seconds for acknowledgment by the server (after the message has been sent)
|
47
|
+
# @return [Channel] Your newly created channel
|
48
|
+
# @see http://wordsabout.it/mobile-devices/cloudconnect-user-documentation/cc-0007-channels#create_a_new_channel
|
49
|
+
# @example Create a new Channel
|
50
|
+
# @client = CloudConnect::CloudConnect.new(:account => 'foo', :token => 'bar')
|
51
|
+
# @client.create_channel("weather")
|
52
|
+
def create_channel(name, options={})
|
53
|
+
enhance( post("channels", options.merge({:name => name})), with: ChannelMethods )
|
17
54
|
end
|
18
|
-
@channels = channels.sort_by(&:channel)
|
19
|
-
end
|
20
55
|
|
56
|
+
# Update a channel
|
57
|
+
#
|
58
|
+
# @param name [String] Name of the channel
|
59
|
+
# @param options [Hash] A customizable set of options
|
60
|
+
# @options options [Integer] :msgttl The delay in seconds before the message is considered expired (and will not be sent)
|
61
|
+
# @options options [Integer] :unitack The delay in seconds for acknowledgment by the asset (after the message has been sent)
|
62
|
+
# @options options [Integer] :serverack The delay in seconds for acknowledgment by the server (after the message has been sent)
|
63
|
+
# @return [Channel] Your newly updated channel
|
64
|
+
# @see http://wordsabout.it/mobile-devices/cloudconnect-user-documentation/cc-0007-channel#update_a_channel
|
65
|
+
# @example Update a Channel
|
66
|
+
# @client = CloudConnect::CloudConnect.new(:account => 'foo', :token => 'bar')
|
67
|
+
# @client.create_channel("weather", :msgttl => 123, ...)
|
68
|
+
def update_channel(name, options={})
|
69
|
+
enhance( put("channels/#{name}", options.merge({:name => name})), with: ChannelMethods )
|
70
|
+
end
|
71
|
+
|
72
|
+
# Delete a single channel
|
73
|
+
#
|
74
|
+
# @param name [String] Name fo the channel
|
75
|
+
# @return [Response] A response object with status
|
76
|
+
# @see http://wordsabout.it/mobile-devices/cloudconnect-user-documentation/cc-0006-channels#delete_a_channel
|
77
|
+
# @example Delete the CUSTOM_SENSOR_TEMP channel
|
78
|
+
# @client = CloudConnect::CloudConnect.new(:account => 'foo', :token => 'bar')
|
79
|
+
# @client.delete_channel("com.acmecorp.weather")
|
80
|
+
def delete_channel(name, options={})
|
81
|
+
delete("channels/#{name}", options, true)
|
82
|
+
end
|
83
|
+
|
84
|
+
module ChannelMethods
|
85
|
+
extend CustomMethods
|
86
|
+
end
|
87
|
+
end
|
21
88
|
end
|
22
89
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module CloudConnect
|
2
|
+
class Client
|
3
|
+
module Configurations
|
4
|
+
# Get a configuration
|
5
|
+
#
|
6
|
+
# @param id [String] ID of the configuration
|
7
|
+
# @return [Configuration] The configuration you requested, if it exists
|
8
|
+
def configuration(id, options={})
|
9
|
+
enhance( get("configs/#{id}", options), with: ConfigurationMethods )
|
10
|
+
end
|
11
|
+
|
12
|
+
# Search configurations
|
13
|
+
#
|
14
|
+
# @param search_term [String] The term to search for
|
15
|
+
# @return [Array] A list of configurations matching the search term
|
16
|
+
def search_configurations(search_term, options={})
|
17
|
+
enhance( get("configs?q=#{search_term}", options), with: ConfigurationMethods )
|
18
|
+
end
|
19
|
+
|
20
|
+
# Create a configuration
|
21
|
+
#
|
22
|
+
# @param name [String] Name of the configuration
|
23
|
+
# @options options [Hash] :data JSON data of the config
|
24
|
+
# @options options [Array] :imeis list of assets concerned by this configuration
|
25
|
+
# @return [Field] Your newly created configuration
|
26
|
+
def create_configuration(name, options={})
|
27
|
+
enhance( post("configs", options.merge(name: name)), with: ConfigurationMethods )
|
28
|
+
end
|
29
|
+
|
30
|
+
# Update a configuration
|
31
|
+
#
|
32
|
+
# @param id [String] Id of the configuration
|
33
|
+
# @options options [String] Name of the configuration
|
34
|
+
# @options options [Hash] :data JSON data of the config
|
35
|
+
# @options options [Array] :imeis list of assets concerned by this configuration
|
36
|
+
# @return [Field] Your newly created configuration
|
37
|
+
def update_configuration(id, options={})
|
38
|
+
enhance( put("configs/#{id}", options), with: ConfigurationMethods )
|
39
|
+
end
|
40
|
+
|
41
|
+
# Get all configurations
|
42
|
+
#
|
43
|
+
# @return [Array] A list of all configurations
|
44
|
+
def configurations(options={})
|
45
|
+
enhance( get("configs", options), with: ConfigurationMethods )
|
46
|
+
end
|
47
|
+
alias :list_configurations :configurations
|
48
|
+
|
49
|
+
module ConfigurationMethods
|
50
|
+
extend CustomMethods
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module CustomMethods
|
2
|
+
# @private
|
3
|
+
def extended(base)
|
4
|
+
# FIXME: Useless time consuming (especially for arrays)...
|
5
|
+
base.class.send(:attr_accessor, :_client) unless base.respond_to?(:_client)
|
6
|
+
end
|
7
|
+
|
8
|
+
# @private
|
9
|
+
# By extending CustomMethods in YourModule, you are able to call
|
10
|
+
# YourModule.apply_to(object_or_array) to add YourModule methods to the
|
11
|
+
# object or to all objects in the array.
|
12
|
+
def apply_to(receiver, client_opts)
|
13
|
+
case receiver
|
14
|
+
when Array
|
15
|
+
receiver.each{|a| a.extend self; a._client = client_opts[:client]}
|
16
|
+
when Hashie::Mash
|
17
|
+
receiver.extend self; receiver._client = client_opts[:client]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|