routemaster-client 1.1.0 → 1.2.0
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/Gemfile.lock +1 -1
- data/README.md +1 -1
- data/routemaster/client.rb +24 -0
- data/routemaster/client/version.rb +1 -1
- data/routemaster/topic.rb +17 -0
- data/spec/client_spec.rb +26 -1
- data/spec/topic_spec.rb +36 -0
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: bc445ea14e11c6da2c488693e9f7ed865baf033b
|
4
|
+
data.tar.gz: dfdc75c9e2e9e367af2d961635b2e734965f0ef2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 033cba5f52966eca578202264f2f9b18404a2217accd235588c405419a1068cea7e7622cad5c379abc050ba31943399b31adc0feffef04d02a286d76a4f886d5
|
7
|
+
data.tar.gz: 69061655159c553e0bb9ef0a4fdaf06f3aab4809663248bb5a306dd6e79c511ba793abd5153cb3e3ba9ec9f18da47402b4057ffdfa5869da1970b4e97605f7a3
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -98,7 +98,7 @@ gem](https://github.com/krisleech/wisper#wisper).
|
|
98
98
|
|
99
99
|
```ruby
|
100
100
|
client.monitor_topics
|
101
|
-
#=> [
|
101
|
+
#=> [ #<Routemaster::Topic:XXXX @name="widgets", @publisher="demo", @events=12589>, ...]
|
102
102
|
|
103
103
|
client.monitor_subscriptions
|
104
104
|
#=> [ {
|
data/routemaster/client.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'routemaster/client/version'
|
2
2
|
require 'routemaster/client/openssl'
|
3
|
+
require 'routemaster/topic'
|
3
4
|
require 'uri'
|
4
5
|
require 'faraday'
|
5
6
|
require 'json'
|
@@ -59,6 +60,20 @@ module Routemaster
|
|
59
60
|
end
|
60
61
|
end
|
61
62
|
|
63
|
+
def monitor_topics
|
64
|
+
response = _get('/topics') do |r|
|
65
|
+
r.headers['Content-Type'] = 'application/json'
|
66
|
+
end
|
67
|
+
|
68
|
+
unless response.success?
|
69
|
+
raise 'failed to connect to /topics'
|
70
|
+
end
|
71
|
+
|
72
|
+
JSON(response.body).map do |raw_topic|
|
73
|
+
Topic.new raw_topic
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
62
77
|
|
63
78
|
private
|
64
79
|
|
@@ -112,6 +127,15 @@ module Routemaster
|
|
112
127
|
retry
|
113
128
|
end
|
114
129
|
|
130
|
+
def _get(path, &block)
|
131
|
+
retries ||= 5
|
132
|
+
_conn.get(path, &block)
|
133
|
+
rescue Net::HTTP::Persistent::Error => e
|
134
|
+
raise if (retries -= 1).zero?
|
135
|
+
puts "warning: retrying get to #{path} on #{e.class.name}: #{e.message} (#{retries})"
|
136
|
+
@_conn = nil
|
137
|
+
retry
|
138
|
+
end
|
115
139
|
|
116
140
|
def _conn
|
117
141
|
@_conn ||= Faraday.new(@_url) do |f|
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Routemaster
|
2
|
+
class Topic
|
3
|
+
|
4
|
+
attr_reader :name, :publisher, :events
|
5
|
+
|
6
|
+
def initialize(options)
|
7
|
+
@name = options.fetch('name')
|
8
|
+
@publisher = options.fetch('publisher')
|
9
|
+
@events = options.fetch('events')
|
10
|
+
end
|
11
|
+
|
12
|
+
def attributes
|
13
|
+
{ name: @name, publisher: @publisher, events: @events }
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
data/spec/client_spec.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'routemaster/client'
|
3
|
+
require 'routemaster/topic'
|
3
4
|
require 'webmock/rspec'
|
4
5
|
|
5
6
|
describe Routemaster::Client do
|
@@ -208,7 +209,31 @@ describe Routemaster::Client do
|
|
208
209
|
end
|
209
210
|
|
210
211
|
describe '#monitor_topics' do
|
211
|
-
|
212
|
+
|
213
|
+
let(:perform) { subject.monitor_topics }
|
214
|
+
let(:expected_result) do
|
215
|
+
[
|
216
|
+
{
|
217
|
+
name: 'widgets',
|
218
|
+
publisher: 'demo',
|
219
|
+
events: 12589
|
220
|
+
}
|
221
|
+
]
|
222
|
+
end
|
223
|
+
|
224
|
+
before do
|
225
|
+
@stub = stub_request(
|
226
|
+
:get, %r{^https://#{options[:uuid]}:x@bus.example.com/topics$}
|
227
|
+
).with { |r|
|
228
|
+
r.headers['Content-Type'] == 'application/json'
|
229
|
+
}.to_return {
|
230
|
+
{ status: 200, body: expected_result.to_json }
|
231
|
+
}
|
232
|
+
end
|
233
|
+
|
234
|
+
it 'expects a collection of topics' do
|
235
|
+
expect(perform.map(&:attributes)).to eql(expected_result)
|
236
|
+
end
|
212
237
|
end
|
213
238
|
|
214
239
|
describe '#monitor_subscriptions' do
|
data/spec/topic_spec.rb
ADDED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'routemaster/topic'
|
2
|
+
|
3
|
+
describe Routemaster::Topic do
|
4
|
+
|
5
|
+
let(:name) { 'widgets' }
|
6
|
+
let(:publisher) { 'demo' }
|
7
|
+
let(:events) { 0 }
|
8
|
+
|
9
|
+
subject do
|
10
|
+
described_class.new({
|
11
|
+
"name" => name,
|
12
|
+
"publisher" => publisher,
|
13
|
+
"events" => events
|
14
|
+
})
|
15
|
+
end
|
16
|
+
|
17
|
+
describe '#initialize' do
|
18
|
+
|
19
|
+
it "creates an instance of #{described_class}" do
|
20
|
+
expect(subject).to be_an_instance_of(described_class)
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
|
25
|
+
describe '#attributes' do
|
26
|
+
|
27
|
+
it "returns an hash with all attributes" do
|
28
|
+
expect(subject.attributes).to eql({
|
29
|
+
name: name,
|
30
|
+
publisher: publisher,
|
31
|
+
events: events
|
32
|
+
})
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: routemaster-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julien Letessier
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -76,10 +76,12 @@ files:
|
|
76
76
|
- routemaster/client/openssl.rb
|
77
77
|
- routemaster/client/version.rb
|
78
78
|
- routemaster/receiver.rb
|
79
|
+
- routemaster/topic.rb
|
79
80
|
- spec/client_spec.rb
|
80
81
|
- spec/receiver_spec.rb
|
81
82
|
- spec/spec_helper.rb
|
82
83
|
- spec/support/rack_test.rb
|
84
|
+
- spec/topic_spec.rb
|
83
85
|
homepage: http://github.com/HouseTrip/routemaster_client
|
84
86
|
licenses:
|
85
87
|
- MIT
|
@@ -109,3 +111,4 @@ test_files:
|
|
109
111
|
- spec/receiver_spec.rb
|
110
112
|
- spec/spec_helper.rb
|
111
113
|
- spec/support/rack_test.rb
|
114
|
+
- spec/topic_spec.rb
|