mosca 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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2cb5540c23079a910c9ecaaae0552ca1215fce85
4
- data.tar.gz: 2877f69002dd959ee86df6d3674f12e34349bc6d
3
+ metadata.gz: 62212685e26483f954066a4aed24f593b1c76126
4
+ data.tar.gz: cab4daa5e94d3ddfdaa47bb825e91047466fb837
5
5
  SHA512:
6
- metadata.gz: 2d3ae4b8afd6a651a7b2d08b20898964b6c68fc95cbbb33e09535e25a20f80059362c638a9e52d2ed13e7644f46795717b5c19b0a8b13941e397e689ef1ef9ac
7
- data.tar.gz: f7505d90646a7d672ca05cd0fe59b1e79052b75d8267c9059336292cff0c4042eb08cc7682357f4022ad603bd54f47784ab277db599ed003e71f586f6b108ad4
6
+ metadata.gz: c837f4511e7e5365698eaf38f3ebfafe9736e1b72149dc68d8b34b1ef1eef55951bd2cf242b52ffc93c080a2fd3331418d6e061aae35fcc551fcc9a20994a316
7
+ data.tar.gz: f99ac1972ad922a60f9f62b68edd90b838dde7831e13cb8eafbf05e935b8ba94c29c795f057bdc6a6a8058a9b8061ef272c61cbdb957179516252fbc689bf363
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.travis.yml ADDED
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+ rvm:
3
+ - 2.0.0
4
+ - 2.1.1
5
+ - rbx-2
6
+ matrix:
7
+ allow_failures:
8
+ - rvm: rbx-2
9
+ fast_finish: true
10
+ env:
11
+ - CODECLIMATE_REPO_TOKEN=188526a5386ffb1697df439556a65c1f1ab2f7889da7452c04220432549248eb
data/Gemfile ADDED
@@ -0,0 +1,5 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in active_force.gemspec
4
+ gemspec
5
+ gem "codeclimate-test-reporter", group: :test, require: nil
data/Gemfile.lock ADDED
@@ -0,0 +1,53 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ mosca (0.0.4)
5
+ json (~> 1.8.1)
6
+ mqtt (~> 0.3.0)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ codeclimate-test-reporter (0.4.0)
12
+ simplecov (>= 0.7.1, < 1.0.0)
13
+ coderay (1.1.0)
14
+ diff-lcs (1.2.5)
15
+ docile (1.1.5)
16
+ json (1.8.1)
17
+ method_source (0.8.2)
18
+ mqtt (0.3.0)
19
+ multi_json (1.10.1)
20
+ pry (0.10.1)
21
+ coderay (~> 1.1.0)
22
+ method_source (~> 0.8.1)
23
+ slop (~> 3.4)
24
+ rake (10.3.2)
25
+ rspec (3.1.0)
26
+ rspec-core (~> 3.1.0)
27
+ rspec-expectations (~> 3.1.0)
28
+ rspec-mocks (~> 3.1.0)
29
+ rspec-core (3.1.2)
30
+ rspec-support (~> 3.1.0)
31
+ rspec-expectations (3.1.0)
32
+ diff-lcs (>= 1.2.0, < 2.0)
33
+ rspec-support (~> 3.1.0)
34
+ rspec-mocks (3.1.0)
35
+ rspec-support (~> 3.1.0)
36
+ rspec-support (3.1.0)
37
+ simplecov (0.9.0)
38
+ docile (~> 1.1.0)
39
+ multi_json
40
+ simplecov-html (~> 0.8.0)
41
+ simplecov-html (0.8.0)
42
+ slop (3.6.0)
43
+
44
+ PLATFORMS
45
+ ruby
46
+
47
+ DEPENDENCIES
48
+ bundler
49
+ codeclimate-test-reporter
50
+ mosca!
51
+ pry
52
+ rake
53
+ rspec
data/README.md ADDED
@@ -0,0 +1,76 @@
1
+ [![Version ](https://img.shields.io/gem/v/mosca.svg)](https://rubygems.org/gems/mosca)
2
+ [![Dependency Status](https://gemnasium.com/ionia-corporation/mosca.svg)](https://gemnasium.com/ionia-corporation/mosca)
3
+ [![Code Climate](https://codeclimate.com/github/ionia-corporation/mosca.png)](https://codeclimate.com/github/ionia-corporation/mosca)
4
+ [![Build Status](https://img.shields.io/travis/ionia-corporation/mosca/master.svg)](https://travis-ci.org/ionia-corporation/mosca)
5
+ [![Coverage ](https://img.shields.io/codeclimate/coverage/github/ionia-corporation/mosca.svg)](https://codeclimate.com/github/ionia-corporation/mosca)
6
+
7
+
8
+ # Mosca
9
+
10
+ A simple client for mqtt communication
11
+
12
+ ## Installation
13
+
14
+ Add this line to your application's Gemfile:
15
+
16
+ gem 'mosca'
17
+
18
+ And then execute:
19
+
20
+ $ bundle
21
+
22
+ Or install it yourself as:
23
+
24
+ $ gem install mosca
25
+
26
+ ## Usage
27
+
28
+ ### Configure
29
+
30
+ You can configure the default timeout for response, and default mqtt broker.
31
+
32
+ ```ruby
33
+ Mosca::Client.default_timeout = 10 # 10 seconds
34
+ Mosca::Client.default_broker = "test.mosquitto.org"
35
+ ```
36
+
37
+ ### New instance
38
+
39
+ ```ruby
40
+ client = Mosca::Client.new user: "username", pass: "password", topic_in: "readings", topic_out: "commands", topic_base: "/device/"
41
+ ```
42
+
43
+ ### Publishing
44
+
45
+ #### Single message
46
+
47
+ ```ruby
48
+ client.publish "restart" # will be sent to topic /device/commands
49
+ ```
50
+
51
+ #### Message with response
52
+
53
+ ```ruby
54
+ response = client.publish "some_command", response: true, topic_in: "responses" # will publish and wait for a response on the /device/responses topic
55
+
56
+ ```
57
+
58
+ ### Getting messages
59
+
60
+ ```ruby
61
+ puts client.get # will wait up to Mosca.default_timeout (default 5) seconds. will return if no response comes.
62
+
63
+ puts client.get timeout: 2, topic_in: "another_topic" # will wait up to 2 seconds for a response on the another_topic topic.
64
+ ```
65
+
66
+ ###TO DO
67
+
68
+ Readme not complete yet
69
+
70
+ ## Contributing
71
+
72
+ 1. Fork it
73
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
74
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
75
+ 4. Push to the branch (`git push origin my-new-feature`)
76
+ 5. Create new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/lib/mosca.rb CHANGED
@@ -1,105 +1,5 @@
1
- require 'mqtt'
2
- require 'json'
1
+ require 'mosca/client'
2
+ require 'mosca/exceptions'
3
3
 
4
- class Mosca
5
- @@default_broker = "test.mosquitto.org"
6
- @@default_timeout = 5
7
- @@debug = false
8
-
9
- attr_accessor :user, :pass, :topic_in, :topic_out, :broker, :topic_base, :client
10
-
11
- def initialize params = {}
12
- @user = params[:user]
13
- @pass = params[:pass]
14
- @topic_in = params[:topic_in]
15
- @topic_out = params[:topic_out]
16
- @topic_base = params[:topic_base] || ""
17
- @broker = params[:broker] || @@default_broker
18
- @client = params[:client] || MQTT::Client
19
- end
20
-
21
- def publish json, params = {}
22
- connection do |c|
23
- topic = params[:topic_out] || @topic_out
24
- debug "[start publish] " + timestamp
25
- c.subscribe(topic_base + topic_in) if params[:response]
26
- c.publish(topic_base + topic,json)
27
- debug "[end publish] " + timestamp
28
- if params[:response]
29
- return get(params.merge({connection: c}))
30
- end
31
- end
32
- end
33
-
34
- def get params = {}
35
- response = {}
36
- connection(params) do |c|
37
- topic = params[:topic_in] || @topic_in
38
- timeout = params[:timeout] || @@default_timeout
39
- begin
40
- Timeout.timeout(timeout) do
41
- debug "[start get] " + timestamp
42
- c.get(topic_base + topic) do |topic, message|
43
- response = parse_response message
44
- break
45
- end
46
- debug "[end get] " + timestamp
47
- end
48
- rescue
49
- end
50
- end
51
- response
52
- end
53
-
54
- def self.default_broker= param
55
- @@default_broker = param
56
- end
57
-
58
- def self.default_timeout= param
59
- @@default_timeout = param
60
- end
61
-
62
- def self.debug= param
63
- @@debug = param
64
- end
65
-
66
- private
67
-
68
- def opts
69
- {remote_host: @broker, username: @user, password: @pass}
70
- end
71
-
72
- def connection params = {}
73
- if params[:connection]
74
- yield params[:connection]
75
- else
76
- @client.connect(opts) do |c|
77
- yield c
78
- end
79
- end
80
- end
81
-
82
- def parse_response response
83
- if valid_json? response
84
- response = JSON.parse response
85
- end
86
- response
87
- end
88
-
89
- def valid_json? json_
90
- begin
91
- JSON.parse(json_)
92
- return true
93
- rescue
94
- return false
95
- end
96
- end
97
-
98
- def debug message
99
- puts message if @@debug
100
- end
101
-
102
- def timestamp
103
- Time.new.to_f.to_s
104
- end
4
+ module Mosca
105
5
  end
@@ -0,0 +1,89 @@
1
+ require 'mqtt'
2
+ require 'json'
3
+ require 'mosca/exceptions'
4
+
5
+ module Mosca
6
+
7
+ class Client
8
+
9
+ class << self
10
+ attr_accessor :default_broker, :default_timeout
11
+ end
12
+
13
+ self.default_broker = ENV["MOSCA_BROKER"] || "test.mosquitto.org"
14
+ self.default_timeout = 5
15
+
16
+ attr_accessor :user, :pass, :topic_in, :topic_out, :broker, :topic_base, :client
17
+
18
+ def initialize args = {}
19
+ options = default.merge(args)
20
+ attributes.each do |attribute|
21
+ send "#{attribute}=".to_sym, options[attribute]
22
+ end
23
+ end
24
+
25
+ def publish json, params = {}
26
+ topic_out = params[:topic_out] || params[:topic] || @topic_out || Exceptions.raise_missing_topic
27
+ topic_in = params[:topic_in] || @topic_in
28
+ connection.subscribe full_topic(topic_in) if params[:response]
29
+ connection.publish full_topic(topic_out), json
30
+ get(params) if params[:response]
31
+ end
32
+
33
+ def get! params = {}
34
+ timeout(params) do
35
+ topic = params[:topic_in] || params[:topic] || @topic_in || Exceptions.raise_missing_topic
36
+ connection.get(full_topic topic) do |topic, message|
37
+ return parse_response message
38
+ end
39
+ end
40
+ end
41
+
42
+ def get params = {}
43
+ get! params
44
+ rescue Timeout::Error
45
+ nil
46
+ end
47
+
48
+ def full_topic topic_name
49
+ topic_base + topic_name
50
+ end
51
+
52
+ private
53
+
54
+ def default
55
+ { topic_base: "",
56
+ broker: self.class.default_broker,
57
+ client: MQTT::Client }
58
+ end
59
+
60
+ def attributes
61
+ [:user, :pass, :topic_in, :topic_out, :topic_base, :broker, :client]
62
+ end
63
+
64
+ def client_options
65
+ {remote_host: @broker, username: @user, password: @pass}
66
+ end
67
+
68
+ def connection
69
+ if @connection and @connection.connected?
70
+ @connection
71
+ else
72
+ @connection ||= @client.connect(client_options)
73
+ end
74
+ end
75
+
76
+ def parse_response response
77
+ JSON.parse response
78
+ rescue JSON::ParserError
79
+ response
80
+ end
81
+
82
+ def timeout params
83
+ timeout = params[:timeout] || self.class.default_timeout
84
+ Timeout.timeout(timeout) do
85
+ yield
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,10 @@
1
+ module Mosca
2
+ module Exceptions
3
+ class MissingTopic < StandardError
4
+ end
5
+
6
+ def self.raise_missing_topic
7
+ raise MissingTopic.new, "Publish or get was called without specifying topic."
8
+ end
9
+ end
10
+ end
data/lib/mosca/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Mosca
2
- VERSION = '0.0.3'
2
+ VERSION = '0.0.4'
3
3
  end
data/mosca.gemspec CHANGED
@@ -19,6 +19,11 @@ Gem::Specification.new do |s|
19
19
  s.test_files = s.files.grep(%r{^(test|spec|features)/})
20
20
  s.require_paths = ["lib"]
21
21
 
22
- s.add_dependency 'mqtt', '~> 0.2.0'
22
+ s.add_dependency 'mqtt', '~> 0.3.0'
23
23
  s.add_dependency 'json', '~> 1.8.1'
24
+
25
+ s.add_development_dependency 'bundler'
26
+ s.add_development_dependency 'rake'
27
+ s.add_development_dependency 'rspec'
28
+ s.add_development_dependency 'pry'
24
29
  end
@@ -1,20 +1,23 @@
1
1
  class ClientDouble
2
+ attr_accessor :connected
2
3
  def connect *args
3
- yield self
4
+ connected = true
5
+ self
4
6
  end
5
7
 
6
- def publish topic, payload
8
+ def connected?
9
+ !! connected
10
+ end
11
+
12
+ def method_missing *args
7
13
 
8
14
  end
9
15
 
10
16
  def get topic, *args
11
-
12
17
  if topic == "json_in_topic"
13
18
  response = '{"a":123}'
14
-
15
19
  elsif topic == "json_array_in_topic"
16
20
  response = '["a",1,2]'
17
-
18
21
  else
19
22
  response = "response"
20
23
  end
data/spec/mosca_spec.rb CHANGED
@@ -1,51 +1,128 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Mosca do
3
+ describe Mosca::Client do
4
4
  OUT = "out_topic"
5
5
  IN = "in_topic"
6
- Mosca.default_timeout = 200
6
+ MESSAGE = "test_message"
7
7
 
8
- before do
9
- @client_double = ClientDouble.new
10
- @mosca = Mosca.new topic_out: OUT, topic_in: IN, client: @client_double
11
- @test_message = "something"
12
- end
8
+ let (:client) {
9
+ ClientDouble.new
10
+ }
11
+
12
+ let (:mosca) {
13
+ Mosca::Client.new topic_out: OUT, topic_in: IN, client: client
14
+ }
13
15
 
14
16
  it "has a default broker" do
15
- @mosca.broker.should eq("test.mosquitto.org")
17
+ expect(mosca.broker).to eq("test.mosquitto.org")
16
18
  end
17
19
 
18
- it "uses topic_out to publish if it was specified, and publishes the desired message" do
19
- @client_double.should_receive(:publish).with(OUT,@test_message)
20
- @mosca.publish @test_message
21
- end
22
- it "can take a topic_out as argument when publishing" do
23
- new_out_topic = "other_out_topic"
24
- @client_double.should_receive(:publish).with(new_out_topic,@test_message)
25
- @mosca.publish @test_message, topic_out: new_out_topic
20
+ it "has attribute accessors" do
21
+ %w{user pass broker topic_in topic_out topic_base}.each do |attr|
22
+ expect(mosca).to respond_to(attr.to_sym)
23
+ expect(mosca).to respond_to("#{attr}=".to_sym)
24
+ end
26
25
  end
27
26
 
28
- it "uses topic_in to get messages if it was specified" do
29
- @client_double.should_receive(:get).with(IN)
30
- @mosca.get
27
+ describe "publishing" do
28
+ it "uses topic_out to publish if it was specified, and publishes the desired message" do
29
+ expect(client).to receive(:publish).with(OUT,MESSAGE)
30
+ mosca.publish MESSAGE
31
+ end
32
+
33
+ it "can take a topic_out as argument when publishing" do
34
+ new_out_topic = "other_out_topic"
35
+ expect(client).to receive(:publish).with(new_out_topic,MESSAGE)
36
+ mosca.publish MESSAGE, topic_out: new_out_topic
37
+ end
38
+
39
+ it "should wait for a response on topic_in if it's specified" do
40
+ expect(client).to receive(:connect).once.and_call_original
41
+ expect(mosca.publish(MESSAGE, response: true)).to eq("response")
42
+ end
31
43
  end
32
44
 
33
- it "can take a topic_in as argument when getting" do
34
- new_in_topic = "other_in_topic"
35
- @client_double.should_receive(:get).with(new_in_topic)
36
- @mosca.get topic_in: new_in_topic
45
+ describe "subscribing" do
46
+ it "uses topic_in to get messages if it was specified" do
47
+ expect(client).to receive(:get).with(IN)
48
+ mosca.get
49
+ end
50
+
51
+ it "can take a topic_in as argument when getting" do
52
+ new_in_topic = "other_in_topic"
53
+ expect(client).to receive(:get).with(new_in_topic)
54
+ mosca.get topic_in: new_in_topic
55
+ end
56
+
57
+ it "will receive the message with get" do
58
+ expect(mosca.get).to eq("response")
59
+ end
37
60
  end
38
61
 
39
- it "will receive the message with get" do
40
- @mosca.get.should eq("response")
62
+ describe "parsing the incoming messages" do
63
+ it "gets a hash if the message was a JSON object" do
64
+ expect(mosca.get topic_in: "json_in_topic").to be_a Hash
65
+ end
66
+
67
+ it "gets an array if the message was a JSON array" do
68
+ expect(mosca.get topic_in: "json_array_in_topic").to be_a Array
69
+ end
70
+
71
+ it "gets plain text if the message aint JSON" do
72
+ expect(mosca.get topic_in: "plain_in_topic").to be_a String
73
+ end
41
74
  end
42
75
 
43
- it "gets a hash if the message was a JSON object" do
44
- @mosca.get(topic_in: "json_in_topic").should be_a(Hash)
76
+ describe "formatting the topic names" do
77
+ before do
78
+ mosca.topic_base = "/base/"
79
+ end
80
+
81
+ it "uses topic_base to form the full topic for publishing and receiving" do
82
+ expect(client).to receive(:get).with("/base/#{IN}")
83
+ expect(client).to receive(:publish).with("/base/#{OUT}", MESSAGE)
84
+ mosca.get
85
+ mosca.publish MESSAGE
86
+ end
45
87
  end
46
88
 
47
- it "gets an array if the message was a JSON array" do
48
- @mosca.get(topic_in: "json_array_in_topic").should be_a(Array)
89
+ describe "Exceptions raising" do
90
+ describe "raises MissingTopic" do
91
+ it "when publishing without topic" do
92
+ mosca.topic_out = nil
93
+ expect { mosca.publish "hi" }.to raise_error Mosca::Exceptions::MissingTopic
94
+ end
95
+
96
+ it "when getting without topic" do
97
+ mosca.topic_in = nil
98
+ expect { mosca.get }.to raise_error Mosca::Exceptions::MissingTopic
99
+ end
100
+ end
49
101
  end
50
102
 
103
+ describe "Timeout" do
104
+ it "has a default timeout of 5 seconds" do
105
+ expect(Mosca::Client.default_timeout).to eq(5)
106
+ end
107
+
108
+ it "can set a default timeout" do
109
+ described_class.default_timeout = 1
110
+ expect(described_class.default_timeout).to eq 1
111
+ end
112
+
113
+ it "calls timeout when getting a message" do
114
+ expect(Timeout).to receive(:timeout)
115
+ mosca.get
116
+ end
117
+
118
+ context "time runs out" do
119
+ before do
120
+ expect(Timeout).to receive(:timeout).and_raise Timeout::Error
121
+ end
122
+
123
+ it "get returns nil" do
124
+ expect(mosca.get).to be nil
125
+ end
126
+ end
127
+ end
51
128
  end
data/spec/spec_helper.rb CHANGED
@@ -1,4 +1,5 @@
1
- require 'pry'
1
+ require "codeclimate-test-reporter"
2
+ CodeClimate::TestReporter.start
2
3
  require 'mosca'
3
- require 'json'
4
4
  require 'client_double'
5
+ require 'pry'
metadata CHANGED
@@ -1,51 +1,115 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mosca
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Armando Andini
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-16 00:00:00.000000000 Z
11
+ date: 2014-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mqtt
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.2.0
19
+ version: 0.3.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.2.0
26
+ version: 0.3.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: 1.8.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.8.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
41
97
  description: A simple client for mqtt communication
42
98
  email: armando.andini@hotmail.com
43
99
  executables: []
44
100
  extensions: []
45
101
  extra_rdoc_files: []
46
102
  files:
103
+ - ".rspec"
104
+ - ".travis.yml"
105
+ - Gemfile
106
+ - Gemfile.lock
107
+ - README.md
108
+ - Rakefile
47
109
  - lib/command_builder.rb
48
110
  - lib/mosca.rb
111
+ - lib/mosca/client.rb
112
+ - lib/mosca/exceptions.rb
49
113
  - lib/mosca/version.rb
50
114
  - mosca.gemspec
51
115
  - spec/client_double.rb
@@ -61,17 +125,17 @@ require_paths:
61
125
  - lib
62
126
  required_ruby_version: !ruby/object:Gem::Requirement
63
127
  requirements:
64
- - - '>='
128
+ - - ">="
65
129
  - !ruby/object:Gem::Version
66
130
  version: '0'
67
131
  required_rubygems_version: !ruby/object:Gem::Requirement
68
132
  requirements:
69
- - - '>='
133
+ - - ">="
70
134
  - !ruby/object:Gem::Version
71
135
  version: '0'
72
136
  requirements: []
73
137
  rubyforge_project:
74
- rubygems_version: 2.0.3
138
+ rubygems_version: 2.4.1
75
139
  signing_key:
76
140
  specification_version: 4
77
141
  summary: MQTT messaging made easy