libmagellan 0.2.3 → 0.2.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: 13b45a69c0c9d2f8b9f43d46982bbc6eaf996c1b
4
- data.tar.gz: 4a66787949d38ea6c7b59165525d9caa68d616d1
3
+ metadata.gz: 3871e63211b7396a0ba438cf859071efd30a810c
4
+ data.tar.gz: e93b0f9b640106a7b305fad091123e61994c25f8
5
5
  SHA512:
6
- metadata.gz: 71440d7cfc32a062e72794ef68fd639f65529b7eaa31e3eeff452d10083694e3bedfbcd4754dd20bacc758579bbe343a4161eeda302441fd0a12d7543976cc75
7
- data.tar.gz: 81787a14f39dfd840cd5c97be79d8b6d0c80703cf01ab3b73e35ef6d629c273ada6a6d773ce3d93c74b93e3f91c2e7e6c8024d0240e864e97b1db1ea9c0e5c84
6
+ metadata.gz: 99775a4dc3340ef07c1b0a80584c84719e01e59b5926152e74410a372532b6e75362bc992cc85b59e26af44fef9ff3243eb152c8e295c827460eb339de439a3c
7
+ data.tar.gz: f146f7fee6374a3d34221344999a555ccd67a4a48c793e902df4279b769c87f590227339ed668509596d6d0512f8feac47edfb83623bb13829be47e4678eae5f
@@ -78,6 +78,10 @@ module Libmagellan
78
78
  end
79
79
  alias :sub :subscribe
80
80
 
81
+ def get_packet(topic=nil, &block)
82
+ @mqtt.get_packet(topic, &block)
83
+ end
84
+
81
85
  def disconnect
82
86
  @mqtt.disconnect
83
87
  end
@@ -109,6 +113,18 @@ module Libmagellan
109
113
  logger.level = level
110
114
  end
111
115
 
116
+ def inspect
117
+ h = @http
118
+ m = @mqtt
119
+ arr = ["\#<#{self.class}: @base_uri=\"#{h.base_uri.to_s}\"",
120
+ "@consumer_key=\"#{h.consumer_key}\"",
121
+ "@client_version=\"#{h.client_version}\"",]
122
+ arr += ["@mqtt_host=\"#{m.host}\"",
123
+ "@mqtt_port=#{m.port}"] if @mqtt
124
+ arr << ">"
125
+ arr.join(", ")
126
+ end
127
+
112
128
  end
113
129
 
114
130
  end
@@ -8,6 +8,9 @@ require 'active_support/core_ext/object/blank'
8
8
  module Libmagellan
9
9
  class HTTP
10
10
 
11
+ attr_accessor :base_uri, :project, :consumer_key, :client_version
12
+ attr_accessor :verbose
13
+
11
14
  DEFAULT_OPTIONS = {
12
15
  # consumer_key: "groovenauts-test",
13
16
  # consumer_secret: "test",
@@ -26,6 +29,7 @@ module Libmagellan
26
29
  @consumer_key = options.delete :consumer_key || @project
27
30
  @consumer_secret = options.delete :consumer_secret
28
31
  @client_version = options.delete :client_version
32
+ @verbose = options.delete :verbose
29
33
  @skip_verify = options[:skip_verify] || false
30
34
  arg = args.first
31
35
  @base_uri =
@@ -51,6 +55,14 @@ module Libmagellan
51
55
  path_query = "#{uri.path}"
52
56
  path_query << "?#{uri.query}" unless uri.query.blank?
53
57
 
58
+ if verbose
59
+ verbose_body =
60
+ case method.downcase.to_sym
61
+ when :patch, :put, :post then "\nBody:\n#{body}"
62
+ else nil
63
+ end
64
+ $stderr.puts("\e[34m#{uri.to_s}\nHeaders:\n#{headers.inspect}#{verbose_body}\e[0m")
65
+ end
54
66
  response = case method.downcase.to_sym
55
67
  when :patch then http.patch(path_query, body, headers)
56
68
  when :delete then http.delete(path_query, headers)
@@ -75,10 +75,10 @@ module Libmagellan
75
75
  # Publish message to MQTT server.
76
76
  # @param [String] topic Topic name
77
77
  # @param [String] payload Payload
78
- def publish(topic, payload)
78
+ def publish(topic, payload, retain=false, qos=0)
79
79
  payload = payload.to_json unless payload.is_a?(::String)
80
80
  with_connection do |c|
81
- c.publish(topic, payload)
81
+ c.publish(topic, payload, retain, qos)
82
82
  log("[PUBLISH] #{topic}: #{payload}", Logger::DEBUG)
83
83
  end
84
84
  end
@@ -105,8 +105,8 @@ module Libmagellan
105
105
  def get(topic=nil)
106
106
  with_connection do |c|
107
107
  if block_given?
108
- c.get(topic) do |topic_, message_|
109
- yield(topic_, message_)
108
+ c.get(topic) do |topic_, payload_|
109
+ yield(topic_, payload_)
110
110
  end
111
111
  else
112
112
  # return topic, payload
@@ -115,6 +115,22 @@ module Libmagellan
115
115
  end
116
116
  end
117
117
 
118
+ # Get message to me
119
+ # @param [String] topic Topic name
120
+ # @return [Mqtt::Packet] MQTT packet object
121
+ def get_packet(topic=nil)
122
+ with_connection do |c|
123
+ if block_given?
124
+ c.get_packet(topic) do |packet|
125
+ yield(packet)
126
+ end
127
+ else
128
+ # return topic, payload
129
+ c.get_packet(topic)
130
+ end
131
+ end
132
+ end
133
+
118
134
 
119
135
  # MQTT Disconnect
120
136
  def disconnect
@@ -1,3 +1,3 @@
1
1
  module Libmagellan
2
- VERSION = "0.2.3"
2
+ VERSION = "0.2.4"
3
3
  end
@@ -16,6 +16,15 @@ describe Libmagellan::HTTP do
16
16
 
17
17
  describe :get do
18
18
  it :success do
19
+ allow(http).to receive(:get).\
20
+ with("/ping", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store")).\
21
+ and_return(res)
22
+ r = lm.request("/ping")
23
+ expect(r).to eq res
24
+ end
25
+
26
+ it "success with client_version" do
27
+ lm.client_version = "0.0.1"
19
28
  allow(http).to receive(:get).\
20
29
  with("/ping", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store", "Client-Version" => "0.0.1")).\
21
30
  and_return(res)
@@ -27,14 +36,14 @@ describe Libmagellan::HTTP do
27
36
  describe :post do
28
37
  it :success do
29
38
  allow(http).to receive(:post).\
30
- with("/ping", "param1=value1", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store", "Client-Version" => "0.0.1")).\
39
+ with("/ping", "param1=value1", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store")).\
31
40
  and_return(res)
32
41
  r = lm.request("/ping", :post, "param1=value1")
33
42
  expect(r).to eq res
34
43
  end
35
44
  it "accept Hash as body parameter" do
36
45
  allow(http).to receive(:post).\
37
- with("/ping", "param1=value1&param2=value2", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store", "Client-Version" => "0.0.1")).\
46
+ with("/ping", "param1=value1&param2=value2", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store")).\
38
47
  and_return(res)
39
48
  r = lm.request("/ping", :post, {param1: "value1", param2: "value2"})
40
49
  expect(r).to eq res
@@ -44,7 +53,7 @@ describe Libmagellan::HTTP do
44
53
  describe :put do
45
54
  it :success do
46
55
  allow(http).to receive(:put).\
47
- with("/ping", "param1=value1&param2=value2", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store", "Client-Version" => "0.0.1")).\
56
+ with("/ping", "param1=value1&param2=value2", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store")).\
48
57
  and_return(res)
49
58
  r = lm.request("/ping", :put, {param1: "value1", param2: "value2"})
50
59
  expect(r).to eq res
@@ -54,7 +63,7 @@ describe Libmagellan::HTTP do
54
63
  describe :delete do
55
64
  it :success do
56
65
  allow(http).to receive(:delete).\
57
- with("/ping", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store", "Client-Version" => "0.0.1")).\
66
+ with("/ping", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store")).\
58
67
  and_return(res)
59
68
  r = lm.request("/ping", :delete)
60
69
  expect(r).to eq res
@@ -76,7 +85,7 @@ describe Libmagellan::HTTP do
76
85
  allow(res).to receive(:code).and_return("200")
77
86
  allow(res).to receive(:body).and_return("pong\n")
78
87
  allow(http).to receive(:get).\
79
- with("/ping", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store", "Client-Version" => "0.0.1")).\
88
+ with("/ping", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store")).\
80
89
  and_return(res)
81
90
  r = lm.test_ping
82
91
  expect(r).to eq lm
@@ -84,13 +93,13 @@ describe Libmagellan::HTTP do
84
93
 
85
94
  it :connection_failure_1_time do
86
95
  allow(http).to receive(:get).\
87
- with("/ping", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store", "Client-Version" => "0.0.1")).\
96
+ with("/ping", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store")).\
88
97
  once.\
89
98
  and_raise(Errno::ECONNREFUSED)
90
99
  allow(res).to receive(:code).and_return("200")
91
100
  allow(res).to receive(:body).and_return("pong\n")
92
101
  allow(http).to receive(:get).\
93
- with("/ping", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store", "Client-Version" => "0.0.1")).\
102
+ with("/ping", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store")).\
94
103
  and_return(res)
95
104
  r = lm.test_ping
96
105
  expect(r).to eq lm
@@ -98,7 +107,7 @@ describe Libmagellan::HTTP do
98
107
 
99
108
  it :connection_failure do
100
109
  allow(http).to receive(:get).\
101
- with("/ping", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store", "Client-Version" => "0.0.1")).\
110
+ with("/ping", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store")).\
102
111
  exactly(3).times.\
103
112
  and_raise(Errno::ECONNREFUSED)
104
113
  expect{ lm.test_ping(max_retry_count: 2, retry_interval: 0) }.to raise_error(Errno::ECONNREFUSED)
@@ -108,7 +117,7 @@ describe Libmagellan::HTTP do
108
117
  allow(res).to receive(:code).and_return("500")
109
118
  allow(res).to receive(:body).and_return("Something wrong!")
110
119
  allow(http).to receive(:get).\
111
- with("/ping", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store", "Client-Version" => "0.0.1")).\
120
+ with("/ping", hash_including("Authorization" => an_instance_of(String), "Cache-Control" => "no-store")).\
112
121
  and_return(res)
113
122
  expect{ lm.test_ping }.to raise_error(Libmagellan::InvalidResponse)
114
123
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: libmagellan
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.3
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - akima
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-03 00:00:00.000000000 Z
11
+ date: 2015-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: signet