http 0.8.6 → 0.8.7

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: 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: