http 0.8.6 → 0.8.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 54c45e83923cbc3784598961bd095891ecb59017
4
- data.tar.gz: 4953e6ce3427e7db773c247930ecbf995d7723ef
3
+ metadata.gz: 04013fb3be8785ffad986b70b2d8110e47d88a8a
4
+ data.tar.gz: edaf6a058cb71d10dd3195830bbe20287b4f673a
5
5
  SHA512:
6
- metadata.gz: 7e848c550021771ef39648f5ceeeb0dc246df75be6558ccd2d5a4b04597d9f1c574c236ccdb6b944dd2c3b5433f6480bc51b0cd638e9b64eed82847ea11b84d1
7
- data.tar.gz: 41f0d37cfa7f2c01ead717b15d3798a1a655cd1e5b2b4c69c06e1c97ada4dbe22fb90fab8efe952bce13c18c95e5af7900208442351294ad0aa959284561ff1a
6
+ metadata.gz: bea10d0cffd4711074a4337d7ef2255593af098221d18776d9a9d0dd0815976d348eae4f9c9d825229fd6e5f5404a7f25efd8231214b16a1ed1dcbeba706b4fe
7
+ data.tar.gz: 2d37693d17444f69f62e2951549b0269fd962ef7f8f302584065a8d37ceb38ffc3d9a98832120b9327eaf2c16d17c8805c9c30e77858b0b33fe910b5c4f7ecc5
data/CHANGES.md CHANGED
@@ -3,6 +3,16 @@
3
3
  * _the future is unwritten_
4
4
 
5
5
 
6
+ ## 0.8.7 (2015-05-08)
7
+
8
+ * Fix `HTTP.timeout` API with options only given. (@ixti)
9
+
10
+
11
+ ## 0.8.6 (2015-05-08)
12
+
13
+ * Reset global timeouts after the request finishes. See #215. (@zanker)
14
+
15
+
6
16
  ## 0.8.5 (2015-05-06)
7
17
 
8
18
  * Add simple timeouts configuration API. See #205. (@ixti)
data/README.md CHANGED
@@ -277,18 +277,27 @@ storage URL supported by rack-cache is supported by http.rb's cache.
277
277
 
278
278
  ### Timeouts
279
279
 
280
- By default, HTTP does not timeout on a request. You can enable per operation (each read/write/connect call) or global (sum of all read/write/connect calls).
280
+ By default, HTTP does not timeout on a request. You can enable per operation
281
+ (each read/write/connect call) or global (sum of all read/write/connect calls).
281
282
 
282
283
  Per operation timeouts are what `Net::HTTP` and the majority of HTTP clients do:
283
284
 
284
285
  ``` ruby
285
- HTTP.timeout(:per_operation, :write => 2, :connect => 5, :read => 10).get "http://example.com"
286
+ HTTP.timeout(:per_operation, :write => 2, :connect => 5, :read => 10)
287
+ .get "http://example.com"
288
+
289
+ # For convinience, you can omit timeout type in this case. So following has
290
+ # same result as the above:
291
+
292
+ HTTP.timeout(:write => 2, :connect => 5, :read => 10).get "http://example.com"
286
293
  ```
287
294
 
288
- Global timeouts let you set an upper bound of how long a request can take, without having to rely on `Timeout.timeout`:
295
+ Global timeouts let you set an upper bound of how long a request can take,
296
+ without having to rely on `Timeout.timeout`:
289
297
 
290
298
  ``` ruby
291
- HTTP.timeout(:global, :write => 1, :connect => 1, :read => 1).get "http://example.com"
299
+ HTTP.timeout(:global, :write => 1, :connect => 1, :read => 1)
300
+ .get "http://example.com"
292
301
  ```
293
302
 
294
303
  Uses a timeout of 3 seconds, for the entire `get` call.
@@ -81,13 +81,13 @@ module HTTP
81
81
  # @option options [Float] :write Write timeout
82
82
  # @option options [Float] :connect Connect timeout
83
83
  def timeout(klass, options = {})
84
- klass, options = options, {} if klass.is_a? Hash
84
+ klass, options = :per_operation, klass if klass.is_a? Hash
85
85
 
86
86
  klass = case klass.to_sym
87
87
  when :null then HTTP::Timeout::Null
88
88
  when :global then HTTP::Timeout::Global
89
89
  when :per_operation then HTTP::Timeout::PerOperation
90
- else fail Error, "Unsupported Timeout class: #{klass}"
90
+ else fail ArgumentError, "Unsupported Timeout class: #{klass}"
91
91
  end
92
92
 
93
93
  [:read, :write, :connect].each do |k|
@@ -1,3 +1,3 @@
1
1
  module HTTP
2
- VERSION = "0.8.6"
2
+ VERSION = "0.8.7"
3
3
  end
@@ -220,4 +220,62 @@ RSpec.describe HTTP do
220
220
  end
221
221
  end
222
222
  end
223
+
224
+ describe ".timeout" do
225
+ context "without timeout type" do
226
+ subject(:client) { HTTP.timeout :read => 123 }
227
+
228
+ it "sets timeout_class to PerOperation" do
229
+ expect(client.default_options.timeout_class).
230
+ to be HTTP::Timeout::PerOperation
231
+ end
232
+
233
+ it "sets given timeout options" do
234
+ expect(client.default_options.timeout_options).
235
+ to eq :read_timeout => 123
236
+ end
237
+ end
238
+
239
+ context "with :null type" do
240
+ subject(:client) { HTTP.timeout :null, :read => 123 }
241
+
242
+ it "sets timeout_class to Null" do
243
+ expect(client.default_options.timeout_class).
244
+ to be HTTP::Timeout::Null
245
+ end
246
+ end
247
+
248
+ context "with :per_operation type" do
249
+ subject(:client) { HTTP.timeout :per_operation, :read => 123 }
250
+
251
+ it "sets timeout_class to PerOperation" do
252
+ expect(client.default_options.timeout_class).
253
+ to be HTTP::Timeout::PerOperation
254
+ end
255
+
256
+ it "sets given timeout options" do
257
+ expect(client.default_options.timeout_options).
258
+ to eq :read_timeout => 123
259
+ end
260
+ end
261
+
262
+ context "with :global type" do
263
+ subject(:client) { HTTP.timeout :global, :read => 123 }
264
+
265
+ it "sets timeout_class to Global" do
266
+ expect(client.default_options.timeout_class).
267
+ to be HTTP::Timeout::Global
268
+ end
269
+
270
+ it "sets given timeout options" do
271
+ expect(client.default_options.timeout_options).
272
+ to eq :read_timeout => 123
273
+ end
274
+ end
275
+
276
+ it "fails with unknown timeout type" do
277
+ expect { HTTP.timeout(:foobar, :read => 123) }.
278
+ to raise_error(ArgumentError, /foobar/)
279
+ end
280
+ end
223
281
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: http
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.6
4
+ version: 0.8.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tony Arcieri
@@ -181,45 +181,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
181
  version: '0'
182
182
  requirements: []
183
183
  rubyforge_project:
184
- rubygems_version: 2.4.6
184
+ rubygems_version: 2.2.2
185
185
  signing_key:
186
186
  specification_version: 4
187
187
  summary: HTTP should be easy
188
- test_files:
189
- - spec/lib/http/cache/headers_spec.rb
190
- - spec/lib/http/cache_spec.rb
191
- - spec/lib/http/client_spec.rb
192
- - spec/lib/http/content_type_spec.rb
193
- - spec/lib/http/headers/mixin_spec.rb
194
- - spec/lib/http/headers_spec.rb
195
- - spec/lib/http/options/body_spec.rb
196
- - spec/lib/http/options/form_spec.rb
197
- - spec/lib/http/options/headers_spec.rb
198
- - spec/lib/http/options/json_spec.rb
199
- - spec/lib/http/options/merge_spec.rb
200
- - spec/lib/http/options/new_spec.rb
201
- - spec/lib/http/options/proxy_spec.rb
202
- - spec/lib/http/options_spec.rb
203
- - spec/lib/http/redirector_spec.rb
204
- - spec/lib/http/request/caching_spec.rb
205
- - spec/lib/http/request/writer_spec.rb
206
- - spec/lib/http/request_spec.rb
207
- - spec/lib/http/response/body_spec.rb
208
- - spec/lib/http/response/caching_spec.rb
209
- - spec/lib/http/response/io_body_spec.rb
210
- - spec/lib/http/response/status_spec.rb
211
- - spec/lib/http/response/string_body_spec.rb
212
- - spec/lib/http/response_spec.rb
213
- - spec/lib/http_spec.rb
214
- - spec/spec_helper.rb
215
- - spec/support/black_hole.rb
216
- - spec/support/capture_warning.rb
217
- - spec/support/connection_reuse_shared.rb
218
- - spec/support/dummy_server.rb
219
- - spec/support/dummy_server/servlet.rb
220
- - spec/support/http_handling_shared.rb
221
- - spec/support/proxy_server.rb
222
- - spec/support/servers/config.rb
223
- - spec/support/servers/runner.rb
224
- - spec/support/ssl_helper.rb
188
+ test_files: []
225
189
  has_rdoc: