rack-client 0.3.0 → 0.3.1.pre.a

Sign up to get free protection for your applications and to get access to all the features.
Files changed (153) hide show
  1. data/Rakefile +12 -14
  2. data/lib/rack/client/adapter/base.rb +23 -14
  3. data/lib/rack/client/adapter/base.rbc +1802 -0
  4. data/lib/rack/client/adapter/simple.rb +53 -21
  5. data/lib/rack/client/adapter/simple.rbc +2063 -0
  6. data/lib/rack/client/adapter.rbc +225 -0
  7. data/lib/rack/client/{dual_band.rb → core/dual_band.rb} +0 -0
  8. data/lib/rack/client/core/dual_band.rbc +380 -0
  9. data/lib/rack/client/{headers.rb → core/headers.rb} +1 -1
  10. data/lib/rack/client/core/headers.rbc +1811 -0
  11. data/lib/rack/client/core/response.rb +50 -0
  12. data/lib/rack/client/core/response.rbc +1105 -0
  13. data/lib/rack/client/core.rb +3 -0
  14. data/lib/rack/client/core.rbc +85 -0
  15. data/lib/rack/client/handler/em-http.rb +3 -7
  16. data/lib/rack/client/handler/em-http.rbc +1648 -0
  17. data/lib/rack/client/handler/excon.rb +6 -14
  18. data/lib/rack/client/handler/excon.rbc +1270 -0
  19. data/lib/rack/client/handler/net_http.rb +7 -4
  20. data/lib/rack/client/handler/net_http.rbc +2400 -0
  21. data/lib/rack/client/handler/typhoeus.rb +12 -5
  22. data/lib/rack/client/handler/typhoeus.rbc +1885 -0
  23. data/lib/rack/client/handler.rbc +340 -0
  24. data/lib/rack/client/{auth → middleware/auth}/abstract/challenge.rb +0 -0
  25. data/lib/rack/client/middleware/auth/abstract/challenge.rbc +1453 -0
  26. data/lib/rack/client/{auth → middleware/auth}/basic.rb +0 -0
  27. data/lib/rack/client/middleware/auth/basic.rbc +1566 -0
  28. data/lib/rack/client/{auth → middleware/auth}/digest/challenge.rb +0 -0
  29. data/lib/rack/client/middleware/auth/digest/challenge.rbc +1124 -0
  30. data/lib/rack/client/{auth → middleware/auth}/digest/md5.rb +0 -0
  31. data/lib/rack/client/middleware/auth/digest/md5.rbc +2241 -0
  32. data/lib/rack/client/{auth → middleware/auth}/digest/params.rb +0 -0
  33. data/lib/rack/client/middleware/auth/digest/params.rbc +365 -0
  34. data/lib/rack/client/middleware/auth.rb +5 -0
  35. data/lib/rack/client/middleware/auth.rbc +117 -0
  36. data/lib/rack/client/{cache → middleware/cache}/cachecontrol.rb +0 -0
  37. data/lib/rack/client/middleware/cache/cachecontrol.rbc +1610 -0
  38. data/lib/rack/client/{cache → middleware/cache}/context.rb +12 -3
  39. data/lib/rack/client/middleware/cache/context.rbc +2074 -0
  40. data/lib/rack/client/{cache → middleware/cache}/entitystore.rb +0 -0
  41. data/lib/rack/client/middleware/cache/entitystore.rbc +1619 -0
  42. data/lib/rack/client/{cache → middleware/cache}/key.rb +0 -0
  43. data/lib/rack/client/middleware/cache/key.rbc +1217 -0
  44. data/lib/rack/client/{cache → middleware/cache}/metastore.rb +0 -0
  45. data/lib/rack/client/middleware/cache/metastore.rbc +2754 -0
  46. data/lib/rack/client/{cache → middleware/cache}/options.rb +0 -0
  47. data/lib/rack/client/middleware/cache/options.rbc +1844 -0
  48. data/lib/rack/client/{cache → middleware/cache}/request.rb +0 -0
  49. data/lib/rack/client/middleware/cache/request.rbc +1020 -0
  50. data/lib/rack/client/{cache → middleware/cache}/response.rb +19 -0
  51. data/lib/rack/client/middleware/cache/response.rbc +1540 -0
  52. data/lib/rack/client/{cache → middleware/cache}/storage.rb +0 -0
  53. data/lib/rack/client/middleware/cache/storage.rbc +1106 -0
  54. data/lib/rack/client/middleware/cache.rb +19 -0
  55. data/lib/rack/client/middleware/cache.rbc +528 -0
  56. data/lib/rack/client/{cookie_jar → middleware/cookie_jar}/context.rb +0 -0
  57. data/lib/rack/client/middleware/cookie_jar/context.rbc +1576 -0
  58. data/lib/rack/client/{cookie_jar → middleware/cookie_jar}/cookie.rb +0 -0
  59. data/lib/rack/client/middleware/cookie_jar/cookie.rbc +2393 -0
  60. data/lib/rack/client/{cookie_jar → middleware/cookie_jar}/cookiestore.rb +0 -0
  61. data/lib/rack/client/middleware/cookie_jar/cookiestore.rbc +1209 -0
  62. data/lib/rack/client/{cookie_jar → middleware/cookie_jar}/options.rb +0 -0
  63. data/lib/rack/client/middleware/cookie_jar/options.rbc +1305 -0
  64. data/lib/rack/client/{cookie_jar → middleware/cookie_jar}/request.rb +0 -0
  65. data/lib/rack/client/middleware/cookie_jar/request.rbc +568 -0
  66. data/lib/rack/client/{cookie_jar → middleware/cookie_jar}/response.rb +0 -0
  67. data/lib/rack/client/middleware/cookie_jar/response.rbc +616 -0
  68. data/lib/rack/client/{cookie_jar → middleware/cookie_jar}/storage.rb +0 -0
  69. data/lib/rack/client/middleware/cookie_jar/storage.rbc +894 -0
  70. data/lib/rack/client/middleware/cookie_jar.rb +17 -0
  71. data/lib/rack/client/middleware/cookie_jar.rbc +471 -0
  72. data/lib/rack/client/{follow_redirects.rb → middleware/follow_redirects.rb} +0 -0
  73. data/lib/rack/client/middleware/follow_redirects.rbc +1344 -0
  74. data/lib/rack/client/middleware.rb +4 -0
  75. data/lib/rack/client/middleware.rbc +101 -0
  76. data/lib/rack/client/parser/base.rbc +898 -0
  77. data/lib/rack/client/parser/body_collection.rbc +1220 -0
  78. data/lib/rack/client/parser/context.rbc +540 -0
  79. data/lib/rack/client/parser/request.rbc +631 -0
  80. data/lib/rack/client/parser/response.rbc +663 -0
  81. data/lib/rack/client/parser.rbc +484 -0
  82. data/lib/rack/client/version.rb +1 -1
  83. data/lib/rack/client/version.rbc +203 -0
  84. data/lib/rack/client.rb +3 -13
  85. data/lib/rack/client.rbc +701 -0
  86. data/spec/core/headers_spec.rb +47 -0
  87. data/spec/core/headers_spec.rbc +1674 -0
  88. data/spec/core/response_spec.rb +78 -0
  89. data/spec/core/response_spec.rbc +2244 -0
  90. data/spec/handler/em_http_spec.rb +4 -19
  91. data/spec/handler/em_http_spec.rbc +224 -0
  92. data/spec/handler/excon_spec.rb +4 -4
  93. data/spec/handler/excon_spec.rbc +224 -0
  94. data/spec/handler/net_http_spec.rb +7 -4
  95. data/spec/handler/net_http_spec.rbc +307 -0
  96. data/spec/handler/typhoeus_spec.rb +6 -17
  97. data/spec/handler/typhoeus_spec.rbc +307 -0
  98. data/spec/helpers/async_helper.rb +31 -0
  99. data/spec/helpers/async_helper.rbc +843 -0
  100. data/spec/helpers/em_http_helper.rb +24 -0
  101. data/spec/helpers/em_http_helper.rbc +663 -0
  102. data/spec/helpers/excon_helper.rb +13 -0
  103. data/spec/helpers/excon_helper.rbc +461 -0
  104. data/spec/helpers/handler_helper.rb +68 -0
  105. data/spec/helpers/handler_helper.rbc +1769 -0
  106. data/spec/helpers/net_http_helper.rb +26 -0
  107. data/spec/helpers/net_http_helper.rbc +806 -0
  108. data/spec/helpers/sync_helper.rb +9 -0
  109. data/spec/helpers/sync_helper.rbc +311 -0
  110. data/spec/helpers/typhoeus_helper.rb +32 -0
  111. data/spec/helpers/typhoeus_helper.rbc +936 -0
  112. data/spec/middleware/cache_spec.rb +25 -0
  113. data/spec/middleware/cache_spec.rbc +712 -0
  114. data/spec/middleware/cookie_jar_spec.rb +19 -0
  115. data/spec/middleware/cookie_jar_spec.rbc +614 -0
  116. data/spec/middleware/etag_spec.rb +10 -0
  117. data/spec/middleware/etag_spec.rbc +438 -0
  118. data/spec/middleware/follow_redirects_spec.rb +12 -0
  119. data/spec/middleware/follow_redirects_spec.rbc +402 -0
  120. data/spec/middleware/lint_spec.rb +10 -0
  121. data/spec/middleware/lint_spec.rbc +392 -0
  122. data/spec/shared/handler_api.rb +33 -0
  123. data/spec/shared/handler_api.rbc +1340 -0
  124. data/spec/shared/streamed_response_api.rb +14 -0
  125. data/spec/shared/streamed_response_api.rbc +508 -0
  126. data/spec/spec_apps/cache.ru +14 -0
  127. data/spec/spec_apps/cookie.ru +12 -0
  128. data/spec/spec_apps/delete.ru +10 -0
  129. data/spec/spec_apps/get.ru +13 -0
  130. data/spec/spec_apps/head.ru +10 -0
  131. data/spec/spec_apps/hello_world.ru +1 -0
  132. data/spec/spec_apps/redirect.ru +13 -0
  133. data/spec/spec_apps/stream.ru +9 -0
  134. data/spec/spec_config.ru +10 -0
  135. data/spec/spec_helper.rb +14 -12
  136. metadata +190 -64
  137. data/lib/rack/client/cache.rb +0 -19
  138. data/lib/rack/client/cookie_jar.rb +0 -17
  139. data/lib/rack/client/response.rb +0 -9
  140. data/spec/apps/example.org.ru +0 -128
  141. data/spec/auth/basic_spec.rb +0 -69
  142. data/spec/auth/digest/md5_spec.rb +0 -69
  143. data/spec/cache_spec.rb +0 -40
  144. data/spec/cookie_jar_spec.rb +0 -37
  145. data/spec/endpoint_spec.rb +0 -30
  146. data/spec/follow_redirect_spec.rb +0 -27
  147. data/spec/handler/async_api_spec.rb +0 -69
  148. data/spec/handler/sync_api_spec.rb +0 -55
  149. data/spec/middleware_helper.rb +0 -37
  150. data/spec/middleware_spec.rb +0 -53
  151. data/spec/parser/json_spec.rb +0 -22
  152. data/spec/parser/yaml_spec.rb +0 -22
  153. data/spec/server_helper.rb +0 -72
@@ -0,0 +1,14 @@
1
+ shared_examples_for "Streamed Response API" do
2
+
3
+ subject do
4
+ Rack::Client.new(@base_url, &method(:rackup))
5
+ end
6
+
7
+ it 'can properly chunk a streamed response' do
8
+ response_body = %w[ this is a stream ]
9
+ request { get('/stream') }
10
+ response do
11
+ each {|part| part.should == response_body.shift }
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,508 @@
1
+ !RBIX
2
+ 0
3
+ x
4
+ M
5
+ 1
6
+ n
7
+ n
8
+ x
9
+ 10
10
+ __script__
11
+ i
12
+ 13
13
+ 5
14
+ 7
15
+ 0
16
+ 64
17
+ 56
18
+ 1
19
+ 47
20
+ 50
21
+ 2
22
+ 1
23
+ 15
24
+ 2
25
+ 11
26
+ I
27
+ 3
28
+ I
29
+ 0
30
+ I
31
+ 0
32
+ I
33
+ 0
34
+ n
35
+ p
36
+ 3
37
+ s
38
+ 21
39
+ Streamed Response API
40
+ M
41
+ 1
42
+ p
43
+ 2
44
+ x
45
+ 9
46
+ for_block
47
+ t
48
+ n
49
+ x
50
+ 9
51
+ __block__
52
+ i
53
+ 19
54
+ 5
55
+ 56
56
+ 0
57
+ 47
58
+ 50
59
+ 1
60
+ 0
61
+ 15
62
+ 5
63
+ 7
64
+ 2
65
+ 64
66
+ 56
67
+ 3
68
+ 47
69
+ 50
70
+ 4
71
+ 1
72
+ 11
73
+ I
74
+ 4
75
+ I
76
+ 0
77
+ I
78
+ 0
79
+ I
80
+ 0
81
+ I
82
+ -2
83
+ p
84
+ 5
85
+ M
86
+ 1
87
+ p
88
+ 2
89
+ x
90
+ 9
91
+ for_block
92
+ t
93
+ n
94
+ x
95
+ 9
96
+ __block__
97
+ i
98
+ 29
99
+ 45
100
+ 0
101
+ 1
102
+ 43
103
+ 2
104
+ 39
105
+ 3
106
+ 5
107
+ 7
108
+ 4
109
+ 47
110
+ 49
111
+ 5
112
+ 1
113
+ 13
114
+ 70
115
+ 10
116
+ 25
117
+ 44
118
+ 43
119
+ 6
120
+ 12
121
+ 49
122
+ 7
123
+ 1
124
+ 50
125
+ 8
126
+ 1
127
+ 11
128
+ I
129
+ 5
130
+ I
131
+ 0
132
+ I
133
+ 0
134
+ I
135
+ 0
136
+ I
137
+ -2
138
+ p
139
+ 9
140
+ x
141
+ 4
142
+ Rack
143
+ n
144
+ x
145
+ 6
146
+ Client
147
+ x
148
+ 9
149
+ @base_url
150
+ x
151
+ 6
152
+ rackup
153
+ x
154
+ 6
155
+ method
156
+ x
157
+ 4
158
+ Proc
159
+ x
160
+ 14
161
+ __from_block__
162
+ x
163
+ 3
164
+ new
165
+ p
166
+ 5
167
+ I
168
+ 0
169
+ I
170
+ 3
171
+ I
172
+ 0
173
+ I
174
+ 4
175
+ I
176
+ 1d
177
+ x
178
+ 64
179
+ /Users/ben/code/rack-client/spec/shared/streamed_response_api.rb
180
+ p
181
+ 0
182
+ x
183
+ 7
184
+ subject
185
+ s
186
+ 38
187
+ can properly chunk a streamed response
188
+ M
189
+ 1
190
+ p
191
+ 2
192
+ x
193
+ 9
194
+ for_block
195
+ t
196
+ n
197
+ x
198
+ 9
199
+ __block__
200
+ i
201
+ 33
202
+ 7
203
+ 0
204
+ 64
205
+ 7
206
+ 1
207
+ 64
208
+ 7
209
+ 2
210
+ 64
211
+ 7
212
+ 3
213
+ 64
214
+ 35
215
+ 4
216
+ 19
217
+ 0
218
+ 15
219
+ 5
220
+ 56
221
+ 4
222
+ 47
223
+ 50
224
+ 5
225
+ 0
226
+ 15
227
+ 5
228
+ 56
229
+ 6
230
+ 47
231
+ 50
232
+ 7
233
+ 0
234
+ 11
235
+ I
236
+ 6
237
+ I
238
+ 1
239
+ I
240
+ 0
241
+ I
242
+ 0
243
+ I
244
+ -2
245
+ p
246
+ 8
247
+ s
248
+ 4
249
+ this
250
+ s
251
+ 2
252
+ is
253
+ s
254
+ 1
255
+ a
256
+ s
257
+ 6
258
+ stream
259
+ M
260
+ 1
261
+ p
262
+ 2
263
+ x
264
+ 9
265
+ for_block
266
+ t
267
+ n
268
+ x
269
+ 9
270
+ __block__
271
+ i
272
+ 9
273
+ 5
274
+ 7
275
+ 0
276
+ 64
277
+ 47
278
+ 49
279
+ 1
280
+ 1
281
+ 11
282
+ I
283
+ 3
284
+ I
285
+ 0
286
+ I
287
+ 0
288
+ I
289
+ 0
290
+ I
291
+ -2
292
+ p
293
+ 2
294
+ s
295
+ 7
296
+ /stream
297
+ x
298
+ 3
299
+ get
300
+ p
301
+ 3
302
+ I
303
+ 0
304
+ I
305
+ 9
306
+ I
307
+ 9
308
+ x
309
+ 64
310
+ /Users/ben/code/rack-client/spec/shared/streamed_response_api.rb
311
+ p
312
+ 0
313
+ x
314
+ 7
315
+ request
316
+ M
317
+ 1
318
+ p
319
+ 2
320
+ x
321
+ 9
322
+ for_block
323
+ t
324
+ n
325
+ x
326
+ 9
327
+ __block__
328
+ i
329
+ 8
330
+ 5
331
+ 56
332
+ 0
333
+ 47
334
+ 50
335
+ 1
336
+ 0
337
+ 11
338
+ I
339
+ 3
340
+ I
341
+ 0
342
+ I
343
+ 0
344
+ I
345
+ 0
346
+ I
347
+ -2
348
+ p
349
+ 2
350
+ M
351
+ 1
352
+ p
353
+ 2
354
+ x
355
+ 9
356
+ for_block
357
+ t
358
+ n
359
+ x
360
+ 9
361
+ __block__
362
+ i
363
+ 18
364
+ 57
365
+ 19
366
+ 0
367
+ 15
368
+ 20
369
+ 0
370
+ 49
371
+ 0
372
+ 0
373
+ 21
374
+ 2
375
+ 0
376
+ 49
377
+ 1
378
+ 0
379
+ 83
380
+ 2
381
+ 11
382
+ I
383
+ 4
384
+ I
385
+ 1
386
+ I
387
+ 1
388
+ I
389
+ 1
390
+ n
391
+ p
392
+ 3
393
+ x
394
+ 6
395
+ should
396
+ x
397
+ 5
398
+ shift
399
+ x
400
+ 2
401
+ ==
402
+ p
403
+ 3
404
+ I
405
+ 0
406
+ I
407
+ b
408
+ I
409
+ 12
410
+ x
411
+ 64
412
+ /Users/ben/code/rack-client/spec/shared/streamed_response_api.rb
413
+ p
414
+ 1
415
+ x
416
+ 4
417
+ part
418
+ x
419
+ 4
420
+ each
421
+ p
422
+ 5
423
+ I
424
+ 0
425
+ I
426
+ a
427
+ I
428
+ 0
429
+ I
430
+ b
431
+ I
432
+ 8
433
+ x
434
+ 64
435
+ /Users/ben/code/rack-client/spec/shared/streamed_response_api.rb
436
+ p
437
+ 0
438
+ x
439
+ 8
440
+ response
441
+ p
442
+ 9
443
+ I
444
+ 0
445
+ I
446
+ 7
447
+ I
448
+ 0
449
+ I
450
+ 8
451
+ I
452
+ 11
453
+ I
454
+ 9
455
+ I
456
+ 19
457
+ I
458
+ a
459
+ I
460
+ 21
461
+ x
462
+ 64
463
+ /Users/ben/code/rack-client/spec/shared/streamed_response_api.rb
464
+ p
465
+ 1
466
+ x
467
+ 13
468
+ response_body
469
+ x
470
+ 2
471
+ it
472
+ p
473
+ 7
474
+ I
475
+ 0
476
+ I
477
+ 1
478
+ I
479
+ 0
480
+ I
481
+ 3
482
+ I
483
+ 8
484
+ I
485
+ 7
486
+ I
487
+ 13
488
+ x
489
+ 64
490
+ /Users/ben/code/rack-client/spec/shared/streamed_response_api.rb
491
+ p
492
+ 0
493
+ x
494
+ 19
495
+ shared_examples_for
496
+ p
497
+ 3
498
+ I
499
+ 0
500
+ I
501
+ 1
502
+ I
503
+ d
504
+ x
505
+ 64
506
+ /Users/ben/code/rack-client/spec/shared/streamed_response_api.rb
507
+ p
508
+ 0
@@ -0,0 +1,14 @@
1
+ require 'sinatra/base'
2
+
3
+ class Cache < Sinatra::Base
4
+ get '/able' do
5
+ if env['HTTP_IF_NONE_MATCH'] == '123456789abcde'
6
+ status 304
7
+ else
8
+ response['ETag'] = '123456789abcde'
9
+ Time.now.to_f.to_s
10
+ end
11
+ end
12
+ end
13
+
14
+ run Cache
@@ -0,0 +1,12 @@
1
+ require 'sinatra/base'
2
+
3
+ class Cookie < Sinatra::Base
4
+ get '/' do
5
+ if request.cookies.empty?
6
+ response.set_cookie('time', :domain => 'localhost', :path => '/', :value => Time.now.to_f)
7
+ response.set_cookie('time2', :domain => 'localhost', :path => '/cookie/', :value => Time.now.to_f)
8
+ end
9
+ end
10
+ end
11
+
12
+ run Cookie
@@ -0,0 +1,10 @@
1
+ require 'sinatra/base'
2
+
3
+ class Delete < Sinatra::Base
4
+ delete '/no-content' do
5
+ status 204
6
+ ''
7
+ end
8
+ end
9
+
10
+ run Delete
@@ -0,0 +1,13 @@
1
+ require 'sinatra/base'
2
+
3
+ class Get < Sinatra::Base
4
+ get '/hello_world' do
5
+ 'Hello World!'
6
+ end
7
+
8
+ get '/stream' do
9
+ %w[ this is a stream ]
10
+ end
11
+ end
12
+
13
+ run Get
@@ -0,0 +1,10 @@
1
+ require 'sinatra/base'
2
+
3
+ class Head < Sinatra::Base
4
+ head '/etag' do
5
+ response['ETag'] = 'DEADBEEF'
6
+ ''
7
+ end
8
+ end
9
+
10
+ run Head
@@ -0,0 +1 @@
1
+ run lambda { [200, {}, 'Hello World!'] }
@@ -0,0 +1,13 @@
1
+ require 'sinatra/base'
2
+
3
+ class Redirect < Sinatra::Base
4
+ get '/' do
5
+ redirect request.script_name + "/redirected"
6
+ end
7
+
8
+ get '/redirected' do
9
+ 'Redirected'
10
+ end
11
+ end
12
+
13
+ run Redirect
@@ -0,0 +1,9 @@
1
+ class SlowArray < Array
2
+ def each
3
+ super {|*a| sleep 0.1 ; yield(*a) }
4
+ end
5
+ end
6
+
7
+ use Rack::Chunked # net/http is a POS
8
+
9
+ run lambda { [200, {}, SlowArray[*%w[ this is a stream ]]] }
@@ -0,0 +1,10 @@
1
+ dir = File.expand_path(File.join(File.dirname(__FILE__), 'spec_apps'))
2
+
3
+ Dir["#{dir}/*.ru"].each do |configru|
4
+ route = File.basename(configru).gsub(/\.ru$/, '')
5
+
6
+ map "/#{route}" do
7
+ app, params = Rack::Builder.parse_file(configru)
8
+ run app
9
+ end
10
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,20 +1,22 @@
1
1
  $:.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
2
2
  require 'rack/client'
3
3
 
4
- require 'rubygems'
5
- require 'spec'
6
- require 'em-spec/rspec'
4
+ Bundler.require(:test)
7
5
 
8
6
  dir = File.expand_path(File.dirname(__FILE__))
9
- require dir + '/server_helper'
10
- require dir + '/middleware_helper'
11
- require dir + '/handler/sync_api_spec'
12
- require dir + '/handler/async_api_spec'
13
7
 
14
- Spec::Runner.configure do |config|
15
- def server
16
- @@server ||= InThreadServer.rackup(File.expand_path(File.dirname(__FILE__) + '/apps/example.org.ru'))
17
- end
8
+ Dir["#{dir}/shared/*.rb"].each {|shared| require shared }
9
+ Dir["#{dir}/helpers/*.rb"].each {|helper| require helper }
10
+
11
+ RSpec.configure do |config|
12
+ config.color_enabled = true
13
+ #config.filter_run :focused => true
14
+ #config.run_all_when_everything_filtered = true
15
+ config.include(HandlerHelper)
18
16
 
19
- def finish() end
17
+ config.before(:all) do
18
+ configru = dir + '/spec_config.ru'
19
+ @server = RealWeb.start_server_in_thread(configru)
20
+ @base_url = "http://localhost:#{@server.port}"
21
+ end
20
22
  end