mosca 0.0.2 → 0.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.
- checksums.yaml +4 -4
- data/lib/mosca/version.rb +1 -1
- data/lib/mosca.rb +3 -7
- data/spec/client_double.rb +25 -0
- data/spec/mosca_spec.rb +31 -11
- data/spec/spec_helper.rb +3 -0
- metadata +3 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2cb5540c23079a910c9ecaaae0552ca1215fce85
|
4
|
+
data.tar.gz: 2877f69002dd959ee86df6d3674f12e34349bc6d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2d3ae4b8afd6a651a7b2d08b20898964b6c68fc95cbbb33e09535e25a20f80059362c638a9e52d2ed13e7644f46795717b5c19b0a8b13941e397e689ef1ef9ac
|
7
|
+
data.tar.gz: f7505d90646a7d672ca05cd0fe59b1e79052b75d8267c9059336292cff0c4042eb08cc7682357f4022ad603bd54f47784ab277db599ed003e71f586f6b108ad4
|
data/lib/mosca/version.rb
CHANGED
data/lib/mosca.rb
CHANGED
@@ -6,7 +6,7 @@ class Mosca
|
|
6
6
|
@@default_timeout = 5
|
7
7
|
@@debug = false
|
8
8
|
|
9
|
-
attr_accessor :user, :pass, :topic_in, :topic_out, :broker, :topic_base
|
9
|
+
attr_accessor :user, :pass, :topic_in, :topic_out, :broker, :topic_base, :client
|
10
10
|
|
11
11
|
def initialize params = {}
|
12
12
|
@user = params[:user]
|
@@ -20,7 +20,7 @@ class Mosca
|
|
20
20
|
|
21
21
|
def publish json, params = {}
|
22
22
|
connection do |c|
|
23
|
-
topic = params[:
|
23
|
+
topic = params[:topic_out] || @topic_out
|
24
24
|
debug "[start publish] " + timestamp
|
25
25
|
c.subscribe(topic_base + topic_in) if params[:response]
|
26
26
|
c.publish(topic_base + topic,json)
|
@@ -34,7 +34,7 @@ class Mosca
|
|
34
34
|
def get params = {}
|
35
35
|
response = {}
|
36
36
|
connection(params) do |c|
|
37
|
-
topic = params[:
|
37
|
+
topic = params[:topic_in] || @topic_in
|
38
38
|
timeout = params[:timeout] || @@default_timeout
|
39
39
|
begin
|
40
40
|
Timeout.timeout(timeout) do
|
@@ -51,10 +51,6 @@ class Mosca
|
|
51
51
|
response
|
52
52
|
end
|
53
53
|
|
54
|
-
def get_with_connection
|
55
|
-
|
56
|
-
end
|
57
|
-
|
58
54
|
def self.default_broker= param
|
59
55
|
@@default_broker = param
|
60
56
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
class ClientDouble
|
2
|
+
def connect *args
|
3
|
+
yield self
|
4
|
+
end
|
5
|
+
|
6
|
+
def publish topic, payload
|
7
|
+
|
8
|
+
end
|
9
|
+
|
10
|
+
def get topic, *args
|
11
|
+
|
12
|
+
if topic == "json_in_topic"
|
13
|
+
response = '{"a":123}'
|
14
|
+
|
15
|
+
elsif topic == "json_array_in_topic"
|
16
|
+
response = '["a",1,2]'
|
17
|
+
|
18
|
+
else
|
19
|
+
response = "response"
|
20
|
+
end
|
21
|
+
|
22
|
+
yield topic, response
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
data/spec/mosca_spec.rb
CHANGED
@@ -1,31 +1,51 @@
|
|
1
|
-
require '
|
1
|
+
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mosca do
|
4
|
+
OUT = "out_topic"
|
5
|
+
IN = "in_topic"
|
6
|
+
Mosca.default_timeout = 200
|
7
|
+
|
4
8
|
before do
|
5
|
-
@
|
9
|
+
@client_double = ClientDouble.new
|
10
|
+
@mosca = Mosca.new topic_out: OUT, topic_in: IN, client: @client_double
|
11
|
+
@test_message = "something"
|
6
12
|
end
|
7
13
|
|
8
14
|
it "has a default broker" do
|
9
|
-
@
|
15
|
+
@mosca.broker.should eq("test.mosquitto.org")
|
10
16
|
end
|
11
17
|
|
12
|
-
it "uses topic_out to publish if it was specified" do
|
13
|
-
|
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
|
14
26
|
end
|
15
27
|
|
16
28
|
it "uses topic_in to get messages if it was specified" do
|
17
|
-
|
29
|
+
@client_double.should_receive(:get).with(IN)
|
30
|
+
@mosca.get
|
18
31
|
end
|
19
32
|
|
20
|
-
it "
|
21
|
-
|
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
|
22
37
|
end
|
23
38
|
|
24
|
-
it "
|
25
|
-
|
39
|
+
it "will receive the message with get" do
|
40
|
+
@mosca.get.should eq("response")
|
26
41
|
end
|
27
42
|
|
28
|
-
it "gets a hash if the message was JSON" do
|
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)
|
45
|
+
end
|
29
46
|
|
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)
|
30
49
|
end
|
50
|
+
|
31
51
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mosca
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Armando Andini
|
@@ -48,6 +48,7 @@ files:
|
|
48
48
|
- lib/mosca.rb
|
49
49
|
- lib/mosca/version.rb
|
50
50
|
- mosca.gemspec
|
51
|
+
- spec/client_double.rb
|
51
52
|
- spec/mosca_spec.rb
|
52
53
|
- spec/spec_helper.rb
|
53
54
|
homepage: http://github.com/antico5/mosca
|
@@ -75,5 +76,6 @@ signing_key:
|
|
75
76
|
specification_version: 4
|
76
77
|
summary: MQTT messaging made easy
|
77
78
|
test_files:
|
79
|
+
- spec/client_double.rb
|
78
80
|
- spec/mosca_spec.rb
|
79
81
|
- spec/spec_helper.rb
|