routemaster-drain 1.1.0 → 2.0.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.
@@ -0,0 +1,224 @@
1
+ PATH
2
+ remote: ../
3
+ specs:
4
+ routemaster-drain (1.1.0)
5
+ faraday (>= 0.9.0)
6
+ faraday_middleware
7
+ hashie
8
+ net-http-persistent (< 3)
9
+ rack (>= 1.4.5)
10
+ redis-namespace
11
+ thread
12
+ wisper (~> 1.6.1)
13
+
14
+ GEM
15
+ remote: https://rubygems.org/
16
+ specs:
17
+ actionmailer (4.0.0)
18
+ actionpack (= 4.0.0)
19
+ mail (~> 2.5.3)
20
+ actionpack (4.0.0)
21
+ activesupport (= 4.0.0)
22
+ builder (~> 3.1.0)
23
+ erubis (~> 2.7.0)
24
+ rack (~> 1.5.2)
25
+ rack-test (~> 0.6.2)
26
+ activemodel (4.0.0)
27
+ activesupport (= 4.0.0)
28
+ builder (~> 3.1.0)
29
+ activerecord (4.0.0)
30
+ activemodel (= 4.0.0)
31
+ activerecord-deprecated_finders (~> 1.0.2)
32
+ activesupport (= 4.0.0)
33
+ arel (~> 4.0.0)
34
+ activerecord-deprecated_finders (1.0.4)
35
+ activesupport (4.0.0)
36
+ i18n (~> 0.6, >= 0.6.4)
37
+ minitest (~> 4.2)
38
+ multi_json (~> 1.3)
39
+ thread_safe (~> 0.1)
40
+ tzinfo (~> 0.3.37)
41
+ addressable (2.5.0)
42
+ public_suffix (~> 2.0, >= 2.0.2)
43
+ appraisal (2.1.0)
44
+ bundler
45
+ rake
46
+ thor (>= 0.14.0)
47
+ arel (4.0.2)
48
+ builder (3.1.4)
49
+ byebug (9.0.6)
50
+ codeclimate-test-reporter (1.0.3)
51
+ simplecov
52
+ coderay (1.1.1)
53
+ concurrent-ruby (1.0.2)
54
+ connection_pool (2.2.1)
55
+ crack (0.4.3)
56
+ safe_yaml (~> 1.0.0)
57
+ diff-lcs (1.2.5)
58
+ docile (1.1.5)
59
+ dotenv (2.1.1)
60
+ erubis (2.7.0)
61
+ faraday (0.10.0)
62
+ multipart-post (>= 1.2, < 3)
63
+ faraday_middleware (0.10.1)
64
+ faraday (>= 0.7.4, < 1.0)
65
+ ffi (1.9.14)
66
+ formatador (0.2.5)
67
+ guard (2.14.0)
68
+ formatador (>= 0.2.4)
69
+ listen (>= 2.7, < 4.0)
70
+ lumberjack (~> 1.0)
71
+ nenv (~> 0.1)
72
+ notiffany (~> 0.0)
73
+ pry (>= 0.9.12)
74
+ shellany (~> 0.0)
75
+ thor (>= 0.18.1)
76
+ guard-compat (1.2.1)
77
+ guard-rspec (4.7.3)
78
+ guard (~> 2.1)
79
+ guard-compat (~> 1.1)
80
+ rspec (>= 2.99.0, < 4.0)
81
+ hashdiff (0.3.1)
82
+ hashie (3.4.6)
83
+ hike (1.2.3)
84
+ i18n (0.7.0)
85
+ json (2.0.2)
86
+ listen (3.1.5)
87
+ rb-fsevent (~> 0.9, >= 0.9.4)
88
+ rb-inotify (~> 0.9, >= 0.9.7)
89
+ ruby_dep (~> 1.2)
90
+ lumberjack (1.0.10)
91
+ mail (2.5.4)
92
+ mime-types (~> 1.16)
93
+ treetop (~> 1.4.8)
94
+ method_source (0.8.2)
95
+ mime-types (1.25.1)
96
+ minitest (4.7.5)
97
+ mono_logger (1.1.0)
98
+ multi_json (1.12.1)
99
+ multipart-post (2.0.0)
100
+ nenv (0.3.0)
101
+ net-http-persistent (2.9.4)
102
+ notiffany (0.1.1)
103
+ nenv (~> 0.1)
104
+ shellany (~> 0.0)
105
+ polyglot (0.3.5)
106
+ pry (0.10.4)
107
+ coderay (~> 1.1.0)
108
+ method_source (~> 0.8.1)
109
+ slop (~> 3.4)
110
+ pry-byebug (3.4.2)
111
+ byebug (~> 9.0)
112
+ pry (~> 0.10)
113
+ psych (2.2.1)
114
+ public_suffix (2.0.4)
115
+ rack (1.5.5)
116
+ rack-protection (1.5.3)
117
+ rack
118
+ rack-test (0.6.3)
119
+ rack (>= 1.0)
120
+ rails (4.0.0)
121
+ actionmailer (= 4.0.0)
122
+ actionpack (= 4.0.0)
123
+ activerecord (= 4.0.0)
124
+ activesupport (= 4.0.0)
125
+ bundler (>= 1.3.0, < 2.0)
126
+ railties (= 4.0.0)
127
+ sprockets-rails (~> 2.0.0)
128
+ railties (4.0.0)
129
+ actionpack (= 4.0.0)
130
+ activesupport (= 4.0.0)
131
+ rake (>= 0.8.7)
132
+ thor (>= 0.18.1, < 2.0)
133
+ rake (12.0.0)
134
+ rb-fsevent (0.9.8)
135
+ rb-inotify (0.9.7)
136
+ ffi (>= 0.5.0)
137
+ redis (3.3.2)
138
+ redis-namespace (1.5.2)
139
+ redis (~> 3.0, >= 3.0.4)
140
+ resque (1.26.0)
141
+ mono_logger (~> 1.0)
142
+ multi_json (~> 1.0)
143
+ redis-namespace (~> 1.3)
144
+ sinatra (>= 0.9.2)
145
+ vegas (~> 0.1.2)
146
+ rspec (3.5.0)
147
+ rspec-core (~> 3.5.0)
148
+ rspec-expectations (~> 3.5.0)
149
+ rspec-mocks (~> 3.5.0)
150
+ rspec-core (3.5.4)
151
+ rspec-support (~> 3.5.0)
152
+ rspec-expectations (3.5.0)
153
+ diff-lcs (>= 1.2.0, < 2.0)
154
+ rspec-support (~> 3.5.0)
155
+ rspec-mocks (3.5.0)
156
+ diff-lcs (>= 1.2.0, < 2.0)
157
+ rspec-support (~> 3.5.0)
158
+ rspec-support (3.5.0)
159
+ ruby_dep (1.5.0)
160
+ safe_yaml (1.0.4)
161
+ shellany (0.0.1)
162
+ sidekiq (4.2.7)
163
+ concurrent-ruby (~> 1.0)
164
+ connection_pool (~> 2.2, >= 2.2.0)
165
+ rack-protection (>= 1.5.0)
166
+ redis (~> 3.2, >= 3.2.1)
167
+ simplecov (0.12.0)
168
+ docile (~> 1.1.0)
169
+ json (>= 1.8, < 3)
170
+ simplecov-html (~> 0.10.0)
171
+ simplecov-html (0.10.0)
172
+ sinatra (1.4.7)
173
+ rack (~> 1.5)
174
+ rack-protection (~> 1.4)
175
+ tilt (>= 1.3, < 3)
176
+ slop (3.6.0)
177
+ sprockets (2.12.4)
178
+ hike (~> 1.2)
179
+ multi_json (~> 1.0)
180
+ rack (~> 1.0)
181
+ tilt (~> 1.1, != 1.3.0)
182
+ sprockets-rails (2.0.1)
183
+ actionpack (>= 3.0)
184
+ activesupport (>= 3.0)
185
+ sprockets (~> 2.8)
186
+ thor (0.19.4)
187
+ thread (0.2.2)
188
+ thread_safe (0.3.5)
189
+ tilt (1.4.1)
190
+ treetop (1.4.15)
191
+ polyglot
192
+ polyglot (>= 0.3.1)
193
+ tzinfo (0.3.52)
194
+ vegas (0.1.11)
195
+ rack (>= 1.0.0)
196
+ webmock (2.3.1)
197
+ addressable (>= 2.3.6)
198
+ crack (>= 0.3.2)
199
+ hashdiff
200
+ wisper (1.6.1)
201
+
202
+ PLATFORMS
203
+ ruby
204
+
205
+ DEPENDENCIES
206
+ appraisal
207
+ bundler
208
+ codeclimate-test-reporter
209
+ dotenv
210
+ guard-rspec
211
+ pry-byebug
212
+ psych
213
+ rack-test
214
+ rails (= 4.0.0)
215
+ rake
216
+ resque
217
+ routemaster-drain!
218
+ rspec
219
+ sidekiq
220
+ simplecov
221
+ webmock
222
+
223
+ BUNDLED WITH
224
+ 1.13.6
@@ -0,0 +1,24 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "psych", :require => false
6
+ gem "bundler", :require => false
7
+ gem "rake", :require => false
8
+ gem "webmock", :require => false
9
+ gem "rack-test", :require => false
10
+ gem "dotenv", :require => false
11
+ gem "codeclimate-test-reporter", :require => false
12
+ gem "simplecov"
13
+ gem "resque"
14
+ gem "sidekiq"
15
+ gem "rails", "5.0.0"
16
+
17
+ group :development, :test do
18
+ gem "guard-rspec", :require => false
19
+ gem "pry-byebug", :require => false
20
+ gem "rspec"
21
+ gem "appraisal"
22
+ end
23
+
24
+ gemspec :path => "../"
@@ -0,0 +1,250 @@
1
+ PATH
2
+ remote: ../
3
+ specs:
4
+ routemaster-drain (1.1.0)
5
+ faraday (>= 0.9.0)
6
+ faraday_middleware
7
+ hashie
8
+ net-http-persistent (< 3)
9
+ rack (>= 1.4.5)
10
+ redis-namespace
11
+ thread
12
+ wisper (~> 1.6.1)
13
+
14
+ GEM
15
+ remote: https://rubygems.org/
16
+ specs:
17
+ actioncable (5.0.0)
18
+ actionpack (= 5.0.0)
19
+ nio4r (~> 1.2)
20
+ websocket-driver (~> 0.6.1)
21
+ actionmailer (5.0.0)
22
+ actionpack (= 5.0.0)
23
+ actionview (= 5.0.0)
24
+ activejob (= 5.0.0)
25
+ mail (~> 2.5, >= 2.5.4)
26
+ rails-dom-testing (~> 2.0)
27
+ actionpack (5.0.0)
28
+ actionview (= 5.0.0)
29
+ activesupport (= 5.0.0)
30
+ rack (~> 2.0)
31
+ rack-test (~> 0.6.3)
32
+ rails-dom-testing (~> 2.0)
33
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
34
+ actionview (5.0.0)
35
+ activesupport (= 5.0.0)
36
+ builder (~> 3.1)
37
+ erubis (~> 2.7.0)
38
+ rails-dom-testing (~> 2.0)
39
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
40
+ activejob (5.0.0)
41
+ activesupport (= 5.0.0)
42
+ globalid (>= 0.3.6)
43
+ activemodel (5.0.0)
44
+ activesupport (= 5.0.0)
45
+ activerecord (5.0.0)
46
+ activemodel (= 5.0.0)
47
+ activesupport (= 5.0.0)
48
+ arel (~> 7.0)
49
+ activesupport (5.0.0)
50
+ concurrent-ruby (~> 1.0, >= 1.0.2)
51
+ i18n (~> 0.7)
52
+ minitest (~> 5.1)
53
+ tzinfo (~> 1.1)
54
+ addressable (2.5.0)
55
+ public_suffix (~> 2.0, >= 2.0.2)
56
+ appraisal (2.1.0)
57
+ bundler
58
+ rake
59
+ thor (>= 0.14.0)
60
+ arel (7.1.4)
61
+ builder (3.2.2)
62
+ byebug (9.0.6)
63
+ codeclimate-test-reporter (1.0.3)
64
+ simplecov
65
+ coderay (1.1.1)
66
+ concurrent-ruby (1.0.2)
67
+ connection_pool (2.2.1)
68
+ crack (0.4.3)
69
+ safe_yaml (~> 1.0.0)
70
+ diff-lcs (1.2.5)
71
+ docile (1.1.5)
72
+ dotenv (2.1.1)
73
+ erubis (2.7.0)
74
+ faraday (0.10.0)
75
+ multipart-post (>= 1.2, < 3)
76
+ faraday_middleware (0.10.1)
77
+ faraday (>= 0.7.4, < 1.0)
78
+ ffi (1.9.14)
79
+ formatador (0.2.5)
80
+ globalid (0.3.7)
81
+ activesupport (>= 4.1.0)
82
+ guard (2.14.0)
83
+ formatador (>= 0.2.4)
84
+ listen (>= 2.7, < 4.0)
85
+ lumberjack (~> 1.0)
86
+ nenv (~> 0.1)
87
+ notiffany (~> 0.0)
88
+ pry (>= 0.9.12)
89
+ shellany (~> 0.0)
90
+ thor (>= 0.18.1)
91
+ guard-compat (1.2.1)
92
+ guard-rspec (4.7.3)
93
+ guard (~> 2.1)
94
+ guard-compat (~> 1.1)
95
+ rspec (>= 2.99.0, < 4.0)
96
+ hashdiff (0.3.1)
97
+ hashie (3.4.6)
98
+ i18n (0.7.0)
99
+ json (2.0.2)
100
+ listen (3.1.5)
101
+ rb-fsevent (~> 0.9, >= 0.9.4)
102
+ rb-inotify (~> 0.9, >= 0.9.7)
103
+ ruby_dep (~> 1.2)
104
+ loofah (2.0.3)
105
+ nokogiri (>= 1.5.9)
106
+ lumberjack (1.0.10)
107
+ mail (2.6.4)
108
+ mime-types (>= 1.16, < 4)
109
+ method_source (0.8.2)
110
+ mime-types (3.1)
111
+ mime-types-data (~> 3.2015)
112
+ mime-types-data (3.2016.0521)
113
+ mini_portile2 (2.1.0)
114
+ minitest (5.9.1)
115
+ mono_logger (1.1.0)
116
+ multi_json (1.12.1)
117
+ multipart-post (2.0.0)
118
+ nenv (0.3.0)
119
+ net-http-persistent (2.9.4)
120
+ nio4r (1.2.1)
121
+ nokogiri (1.6.8.1)
122
+ mini_portile2 (~> 2.1.0)
123
+ notiffany (0.1.1)
124
+ nenv (~> 0.1)
125
+ shellany (~> 0.0)
126
+ pry (0.10.4)
127
+ coderay (~> 1.1.0)
128
+ method_source (~> 0.8.1)
129
+ slop (~> 3.4)
130
+ pry-byebug (3.4.2)
131
+ byebug (~> 9.0)
132
+ pry (~> 0.10)
133
+ psych (2.2.1)
134
+ public_suffix (2.0.4)
135
+ rack (2.0.1)
136
+ rack-protection (1.5.3)
137
+ rack
138
+ rack-test (0.6.3)
139
+ rack (>= 1.0)
140
+ rails (5.0.0)
141
+ actioncable (= 5.0.0)
142
+ actionmailer (= 5.0.0)
143
+ actionpack (= 5.0.0)
144
+ actionview (= 5.0.0)
145
+ activejob (= 5.0.0)
146
+ activemodel (= 5.0.0)
147
+ activerecord (= 5.0.0)
148
+ activesupport (= 5.0.0)
149
+ bundler (>= 1.3.0, < 2.0)
150
+ railties (= 5.0.0)
151
+ sprockets-rails (>= 2.0.0)
152
+ rails-dom-testing (2.0.1)
153
+ activesupport (>= 4.2.0, < 6.0)
154
+ nokogiri (~> 1.6.0)
155
+ rails-html-sanitizer (1.0.3)
156
+ loofah (~> 2.0)
157
+ railties (5.0.0)
158
+ actionpack (= 5.0.0)
159
+ activesupport (= 5.0.0)
160
+ method_source
161
+ rake (>= 0.8.7)
162
+ thor (>= 0.18.1, < 2.0)
163
+ rake (12.0.0)
164
+ rb-fsevent (0.9.8)
165
+ rb-inotify (0.9.7)
166
+ ffi (>= 0.5.0)
167
+ redis (3.3.2)
168
+ redis-namespace (1.5.2)
169
+ redis (~> 3.0, >= 3.0.4)
170
+ resque (1.26.0)
171
+ mono_logger (~> 1.0)
172
+ multi_json (~> 1.0)
173
+ redis-namespace (~> 1.3)
174
+ sinatra (>= 0.9.2)
175
+ vegas (~> 0.1.2)
176
+ rspec (3.5.0)
177
+ rspec-core (~> 3.5.0)
178
+ rspec-expectations (~> 3.5.0)
179
+ rspec-mocks (~> 3.5.0)
180
+ rspec-core (3.5.4)
181
+ rspec-support (~> 3.5.0)
182
+ rspec-expectations (3.5.0)
183
+ diff-lcs (>= 1.2.0, < 2.0)
184
+ rspec-support (~> 3.5.0)
185
+ rspec-mocks (3.5.0)
186
+ diff-lcs (>= 1.2.0, < 2.0)
187
+ rspec-support (~> 3.5.0)
188
+ rspec-support (3.5.0)
189
+ ruby_dep (1.5.0)
190
+ safe_yaml (1.0.4)
191
+ shellany (0.0.1)
192
+ sidekiq (4.2.7)
193
+ concurrent-ruby (~> 1.0)
194
+ connection_pool (~> 2.2, >= 2.2.0)
195
+ rack-protection (>= 1.5.0)
196
+ redis (~> 3.2, >= 3.2.1)
197
+ simplecov (0.12.0)
198
+ docile (~> 1.1.0)
199
+ json (>= 1.8, < 3)
200
+ simplecov-html (~> 0.10.0)
201
+ simplecov-html (0.10.0)
202
+ sinatra (1.0)
203
+ rack (>= 1.0)
204
+ slop (3.6.0)
205
+ sprockets (3.7.0)
206
+ concurrent-ruby (~> 1.0)
207
+ rack (> 1, < 3)
208
+ sprockets-rails (3.2.0)
209
+ actionpack (>= 4.0)
210
+ activesupport (>= 4.0)
211
+ sprockets (>= 3.0.0)
212
+ thor (0.19.4)
213
+ thread (0.2.2)
214
+ thread_safe (0.3.5)
215
+ tzinfo (1.2.2)
216
+ thread_safe (~> 0.1)
217
+ vegas (0.1.11)
218
+ rack (>= 1.0.0)
219
+ webmock (2.3.1)
220
+ addressable (>= 2.3.6)
221
+ crack (>= 0.3.2)
222
+ hashdiff
223
+ websocket-driver (0.6.4)
224
+ websocket-extensions (>= 0.1.0)
225
+ websocket-extensions (0.1.2)
226
+ wisper (1.6.1)
227
+
228
+ PLATFORMS
229
+ ruby
230
+
231
+ DEPENDENCIES
232
+ appraisal
233
+ bundler
234
+ codeclimate-test-reporter
235
+ dotenv
236
+ guard-rspec
237
+ pry-byebug
238
+ psych
239
+ rack-test
240
+ rails (= 5.0.0)
241
+ rake
242
+ resque
243
+ routemaster-drain!
244
+ rspec
245
+ sidekiq
246
+ simplecov
247
+ webmock
248
+
249
+ BUNDLED WITH
250
+ 1.13.6
@@ -3,21 +3,15 @@ require 'faraday'
3
3
  require 'faraday_middleware'
4
4
  require 'hashie'
5
5
  require 'routemaster/config'
6
- require 'routemaster/middleware/caching'
6
+ require 'routemaster/middleware/response_caching'
7
+ require 'routemaster/middleware/error_handling'
7
8
 
8
9
  module Routemaster
9
- class Fetcher
10
- DEFAULT_MIDDLEWARE = Routemaster::Middleware::Caching
11
-
12
- #
13
- # Usage:
14
- #
15
- # You can extend Fetcher with custom middlewares like:
16
- # Fetcher.new(middlewares: [[MyCustomMiddleWare, option1, option2]])
17
- #
18
- def initialize(middlewares: [], listener: nil)
10
+ class APIClient
11
+ def initialize(middlewares: [], listener: nil, response_class: nil)
19
12
  @listener = listener
20
- @middlewares = generate_middlewares(middlewares)
13
+ @middlewares = middlewares
14
+ @response_class = response_class
21
15
  end
22
16
 
23
17
  # Performs a GET HTTP request for the `url`, with optional
@@ -28,30 +22,50 @@ module Routemaster
28
22
  # string otherwise.
29
23
  def get(url, params: {}, headers: {})
30
24
  host = URI.parse(url).host
31
- connection.get(url, params, headers.merge(auth_header(host)))
25
+ response_wrapper do
26
+ connection.get(url, params, headers.merge(auth_header(host)))
27
+ end
28
+ end
29
+
30
+ def post(url, body: {}, headers: {})
31
+ host = URI.parse(url).host
32
+ response_wrapper do
33
+ connection.post do |req|
34
+ req.url url
35
+ req.headers = headers.merge(auth_header(host))
36
+ req.body = body.to_json
37
+ end
38
+ end
39
+ end
40
+
41
+ def discover(url)
42
+ get(url)
32
43
  end
33
44
 
34
45
  private
35
46
 
36
- def generate_middlewares(middlewares)
37
- default_middleware = [DEFAULT_MIDDLEWARE, listener: @listener]
38
- middlewares.unshift(default_middleware)
47
+ def response_wrapper(&block)
48
+ response = block.call
49
+ @response_class ? @response_class.new(response, client: self) : response
39
50
  end
40
51
 
41
52
  def connection
42
53
  @connection ||= Faraday.new do |f|
54
+ f.request :json
43
55
  f.request :retry, max: 2, interval: 100e-3, backoff_factor: 2
44
56
  f.response :mashify
45
57
  f.response :json, content_type: /\bjson/
58
+ f.use Routemaster::Middleware::ResponseCaching, listener: @listener
46
59
  f.adapter :net_http_persistent
47
-
48
- f.options.timeout = ENV.fetch('ROUTEMASTER_CACHE_TIMEOUT', 1).to_f
49
- f.options.open_timeout = ENV.fetch('ROUTEMASTER_CACHE_TIMEOUT', 1).to_f
50
- f.ssl.verify = ENV.fetch('ROUTEMASTER_CACHE_VERIFY_SSL', 'false') == 'true'
60
+ f.use Routemaster::Middleware::ErrorHandling
51
61
 
52
62
  @middlewares.each do |middleware|
53
63
  f.use(*middleware)
54
64
  end
65
+
66
+ f.options.timeout = ENV.fetch('ROUTEMASTER_CACHE_TIMEOUT', 1).to_f
67
+ f.options.open_timeout = ENV.fetch('ROUTEMASTER_CACHE_TIMEOUT', 1).to_f
68
+ f.ssl.verify = ENV.fetch('ROUTEMASTER_CACHE_VERIFY_SSL', 'false') == 'true'
55
69
  end
56
70
  end
57
71
 
@@ -1,4 +1,4 @@
1
- require 'routemaster/fetcher'
1
+ require 'routemaster/api_client'
2
2
  require 'thread/pool'
3
3
  require 'thread/future'
4
4
  require 'singleton'
@@ -11,7 +11,7 @@ module Routemaster
11
11
  #
12
12
  # Emits `cache_bust`, `cache_hit`, and `cache_miss` events.
13
13
  #
14
- # The requests themselves are handled by {Fetcher}.
14
+ # The requests themselves are handled by {APIClient}.
15
15
  # Note that `Cache-Control` headers are intentionally ignored, as it is
16
16
  # assumed one will call {#bust} when the cache becomes stale.
17
17
  #
@@ -60,9 +60,9 @@ module Routemaster
60
60
  delegate %i(status headers body) => :value
61
61
  end
62
62
 
63
- def initialize(redis:nil, fetcher:nil)
63
+ def initialize(redis:nil, client:nil)
64
64
  @redis = redis || Config.cache_redis
65
- @fetcher = fetcher || Fetcher.new(listener: self)
65
+ @client = client || APIClient.new(listener: self)
66
66
  end
67
67
 
68
68
  # Bust the cache for a given URL
@@ -93,7 +93,7 @@ module Routemaster
93
93
  "application/json"
94
94
  }
95
95
  headers['Accept-Language'] = locale if locale
96
- @fetcher.get(url, headers: headers)
96
+ @client.get(url, headers: headers)
97
97
  end
98
98
 
99
99
  # Like {#get}, but schedules any request in the background using a thread
@@ -24,6 +24,20 @@ module Routemaster
24
24
  RedisBroker.instance.get(ENV.fetch('ROUTEMASTER_CACHE_REDIS'))
25
25
  end
26
26
 
27
+ #
28
+ # Given an ENV format of service:service_root_url,other_service:other_service_root_url
29
+ # Generate a hash of { service => service_root_url, other_service => other_service_root_url }
30
+ #
31
+ def hosts
32
+ @hosts ||= begin
33
+ hosts = ENV['ROUTEMASTER_DRAIN_HOSTS'].split(',')
34
+ hosts.inject({}) do |res, host|
35
+ key, val = host.split(':')
36
+ res.merge(key => val)
37
+ end
38
+ end
39
+ end
40
+
27
41
  def cache_expiry
28
42
  Integer(ENV.fetch('ROUTEMASTER_CACHE_EXPIRY', 86_400 * 365))
29
43
  end
@@ -1,5 +1,5 @@
1
1
  module Routemaster
2
2
  module Drain
3
- VERSION = '1.1.0'
3
+ VERSION = '2.0.0'
4
4
  end
5
5
  end