typhoeus 0.6.8 → 0.6.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +15 -0
  2. data/.travis.yml +1 -1
  3. data/CHANGELOG.md +2 -1
  4. data/README.md +9 -0
  5. data/lib/typhoeus/easy_factory.rb +2 -2
  6. data/lib/typhoeus/hydra.rb +1 -1
  7. data/lib/typhoeus/hydra/queueable.rb +16 -0
  8. data/lib/typhoeus/hydra/runnable.rb +1 -7
  9. data/lib/typhoeus/request/stubbable.rb +2 -2
  10. data/lib/typhoeus/response/informations.rb +4 -0
  11. data/lib/typhoeus/version.rb +1 -1
  12. data/spec/rack/typhoeus/middleware/params_decoder/helper_spec.rb +4 -4
  13. data/spec/rack/typhoeus/middleware/params_decoder_spec.rb +2 -2
  14. data/spec/typhoeus/adapters/faraday_spec.rb +6 -6
  15. data/spec/typhoeus/easy_factory_spec.rb +8 -8
  16. data/spec/typhoeus/expectation_spec.rb +18 -18
  17. data/spec/typhoeus/hydra/addable_spec.rb +6 -6
  18. data/spec/typhoeus/hydra/before_spec.rb +9 -9
  19. data/spec/typhoeus/hydra/cacheable_spec.rb +6 -6
  20. data/spec/typhoeus/hydra/memoizable_spec.rb +5 -5
  21. data/spec/typhoeus/hydra/queueable_spec.rb +49 -0
  22. data/spec/typhoeus/hydra/runnable_spec.rb +11 -30
  23. data/spec/typhoeus/hydra/stubbable_spec.rb +1 -1
  24. data/spec/typhoeus/hydra_spec.rb +1 -1
  25. data/spec/typhoeus/pool_spec.rb +4 -4
  26. data/spec/typhoeus/request/before_spec.rb +9 -9
  27. data/spec/typhoeus/request/block_connection_spec.rb +5 -5
  28. data/spec/typhoeus/request/cacheable_spec.rb +4 -4
  29. data/spec/typhoeus/request/callbacks_spec.rb +3 -3
  30. data/spec/typhoeus/request/operations_spec.rb +7 -7
  31. data/spec/typhoeus/request/stubbable_spec.rb +1 -1
  32. data/spec/typhoeus/request_spec.rb +3 -3
  33. data/spec/typhoeus/response/header_spec.rb +2 -2
  34. data/spec/typhoeus/response/informations_spec.rb +9 -1
  35. data/spec/typhoeus/response/status_spec.rb +10 -10
  36. data/spec/typhoeus/response_spec.rb +4 -4
  37. data/spec/typhoeus_spec.rb +4 -4
  38. data/typhoeus.gemspec +1 -1
  39. metadata +7 -14
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YmYzNGMzZmI1NzgwZjM4MjE3Mjc3OTkxMzkzZDQ4NWI1MmViZGQ4OQ==
5
+ data.tar.gz: !binary |-
6
+ YTVlMWVhYjBjYzczYTgyYWUzN2E3NDNiM2Y0ZTc2YjViNDZmMzUyYw==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ M2MwNzI3MmM3NmE0OGU3OGQ3OTY2OThmOGQ4ZDFiNzU2ZDU4NGYyYTFhM2Y1
10
+ ZGZiNTUwNjFhYjlmMTJjM2QwY2ZjNjlkZDkwOTRjYzIxOWNkMzA0YzZhMWY4
11
+ ZThjYzEzZDIzMDRhODU1NmU5NDFmMTQwNDQ3MmQxNWY3YThjNGM=
12
+ data.tar.gz: !binary |-
13
+ N2ZlMTBjNGZhMzBhMWNmZDE5OWI3MWZhOTIxNGNmMDFiOGQ2YzAyYzExOWQ3
14
+ M2JmZTQxYzg4MzM2MTA0ODFmM2Y3NTcwYzY1Y2EyZjQ3MjgzMjQ5NDg4YWIx
15
+ MzA3ZDhjOTBkNTBkMTQ4Y2E1NTAyN2VmNTU0MTk4NTYxNmY2ODY=
@@ -5,7 +5,6 @@ rvm:
5
5
  - 1.9.3
6
6
  - 2.0.0
7
7
  - ruby-head
8
- - ree
9
8
  - jruby-head
10
9
  - jruby-18mode
11
10
  - jruby-19mode
@@ -18,3 +17,4 @@ matrix:
18
17
  - rvm: jruby-head
19
18
  - rvm: rbx-18mode
20
19
  - rvm: rbx-19mode
20
+ - rvm: ree
@@ -13,8 +13,9 @@ Bugfixes:
13
13
 
14
14
  Enhancements:
15
15
 
16
+ * Use an updated Ethon version. Note that from now on the `mime-types` is no longer a Ethon dependency. The gem will be still used if available to determine the mime type of a file which is uploaded. That means you have to have take care of the gem installation yourself.
16
17
  * Use SVG for status badges in README.
17
- 7[Sean Linsley](https://github.com/seanlinsley), [\#353](https://github.com/typhoeus/typhoeus/pull/353))
18
+ ([Sean Linsley](https://github.com/seanlinsley), [\#353](https://github.com/typhoeus/typhoeus/pull/353))
18
19
  * Missing quotes in README example code.
19
20
  ([Jason R. Clark](https://github.com/jasonrclark), [\#351](https://github.com/typhoeus/typhoeus/pull/351))
20
21
  * Specs for Faraday adapter.
data/README.md CHANGED
@@ -344,6 +344,12 @@ Typhoeus.get("www.example.com", followlocation: true)
344
344
  Typhoeus::Request.get("www.example.com", userpwd: "user:password")
345
345
  ```
346
346
 
347
+ ### Compression
348
+
349
+ ```ruby
350
+ Typhoeus.get("www.example.com", accept_encoding: "gzip")
351
+ ```
352
+
347
353
  ### Cookies
348
354
 
349
355
  ```ruby
@@ -383,7 +389,10 @@ certificate subject is \*.host.com). You can disable host verification. Like
383
389
  this:
384
390
 
385
391
  ```ruby
392
+ # host checking enabled
386
393
  Typhoeus.get("https://www.example.com", ssl_verifyhost: 2)
394
+ # host checking disabled
395
+ Typhoeus.get("https://www.example.com", ssl_verifyhost: 0)
387
396
  ```
388
397
 
389
398
  ### Verbose debug output
@@ -49,7 +49,7 @@ module Typhoeus
49
49
  def get
50
50
  begin
51
51
  easy.http_request(
52
- request.base_url,
52
+ request.base_url.to_s,
53
53
  request.options.fetch(:method, :get),
54
54
  sanitize(request.options)
55
55
  )
@@ -105,7 +105,7 @@ module Typhoeus
105
105
  request.finish(Response.new(easy.mirror.options))
106
106
  Typhoeus::Pool.release(easy)
107
107
  if hydra && !hydra.queued_requests.empty?
108
- hydra.dequeue
108
+ hydra.dequeue_many
109
109
  end
110
110
  end
111
111
  end
@@ -50,7 +50,7 @@ module Typhoeus
50
50
 
51
51
  # @example Set max_concurrency.
52
52
  # Typhoeus::Hydra.new(max_concurrency: 20)
53
- attr_reader :max_concurrency
53
+ attr_accessor :max_concurrency
54
54
 
55
55
  # @api private
56
56
  attr_reader :multi
@@ -62,6 +62,22 @@ module Typhoeus
62
62
  def dequeue
63
63
  add(queued_requests.shift) unless queued_requests.empty?
64
64
  end
65
+
66
+ # Removes requests from queued_requests and
67
+ # adds them to the hydra until max_concurrency
68
+ # is reached.
69
+ #
70
+ # @example Dequeue requests.
71
+ # hydra.dequeue_many
72
+ #
73
+ # @since 0.6.8
74
+ def dequeue_many
75
+ number = multi.easy_handles.count
76
+ until number == max_concurrency || queued_requests.empty?
77
+ add(queued_requests.shift)
78
+ number += 1
79
+ end
80
+ end
65
81
  end
66
82
  end
67
83
  end
@@ -11,13 +11,7 @@ module Typhoeus
11
11
  #
12
12
  # @return [ Symbol ] Return value from multi.perform.
13
13
  def run
14
- number_requests = 0
15
- loop do
16
- break if number_requests == max_concurrency || queued_requests.empty?
17
- number_requests += queued_requests.pop(max_concurrency).map do |request|
18
- add(request)
19
- end.size
20
- end
14
+ dequeue_many
21
15
  multi.perform
22
16
  end
23
17
  end
@@ -8,8 +8,8 @@ module Typhoeus
8
8
  # @api private
9
9
  module Stubbable
10
10
 
11
- # Override run in order to check for matching expecations.
12
- # When an expecation is found, super is not called. Instead a
11
+ # Override run in order to check for matching expectations.
12
+ # When an expectation is found, super is not called. Instead a
13
13
  # canned response is assigned to the request.
14
14
  #
15
15
  # @example Run the request.
@@ -193,6 +193,10 @@ module Typhoeus
193
193
  options[:redirect_count]
194
194
  end
195
195
 
196
+ def request_size
197
+ options[:request_size]
198
+ end
199
+
196
200
  def debug_info
197
201
  options[:debug_info]
198
202
  end
@@ -1,5 +1,5 @@
1
1
  module Typhoeus
2
2
 
3
3
  # The current Typhoeus version.
4
- VERSION = '0.6.8'
4
+ VERSION = '0.6.9'
5
5
  end
@@ -82,13 +82,13 @@ describe "Rack::Typhoeus::Middleware::ParamsDecoder::Helper" do
82
82
  context "and its 0" do
83
83
  let(:params){ {'0' => 1} }
84
84
  it 'returns true' do
85
- expect(encoded).to be_true
85
+ expect(encoded).to be_truthy
86
86
  end
87
87
  end
88
88
  context "and its not 0" do
89
89
  let(:params){ {'some-key' => 1}}
90
90
  it 'returns false' do
91
- expect(encoded).to be_false
91
+ expect(encoded).to be_falsey
92
92
  end
93
93
  end
94
94
  end
@@ -97,7 +97,7 @@ describe "Rack::Typhoeus::Middleware::ParamsDecoder::Helper" do
97
97
  let(:params) { Hash[12.times.map {|i| [i, (i+65).chr]}] }
98
98
 
99
99
  it "returns true" do
100
- expect(encoded).to be_true
100
+ expect(encoded).to be_truthy
101
101
  end
102
102
  end
103
103
 
@@ -105,7 +105,7 @@ describe "Rack::Typhoeus::Middleware::ParamsDecoder::Helper" do
105
105
  let(:params) { {:a => 1} }
106
106
 
107
107
  it "returns false" do
108
- expect(encoded).to be_false
108
+ expect(encoded).to be_falsey
109
109
  end
110
110
  end
111
111
  end
@@ -7,11 +7,11 @@ describe "Rack::Typhoeus::Middleware::ParamsDecoder" do
7
7
  end
8
8
 
9
9
  let(:app) do
10
- stub
10
+ double
11
11
  end
12
12
 
13
13
  let(:env) do
14
- stub
14
+ double
15
15
  end
16
16
 
17
17
  let(:klass) do
@@ -84,7 +84,7 @@ describe Faraday::Adapter::Typhoeus do
84
84
  let(:env) { { :method => :get, :ssl => {}, :request => {} } }
85
85
 
86
86
  it "falls back to single" do
87
- Typhoeus::Request.should_receive(:new).and_return(double(:options => {}, :on_complete => [], :run => true))
87
+ expect(Typhoeus::Request).to receive(:new).and_return(double(:options => {}, :on_complete => [], :run => true))
88
88
  adapter.method(:perform_request).call(env)
89
89
  end
90
90
  end
@@ -119,7 +119,7 @@ describe Faraday::Adapter::Typhoeus do
119
119
  end
120
120
 
121
121
  it "sets on_complete callback" do
122
- expect(request.on_complete).to have(1).items
122
+ expect(request.on_complete.size).to eq(1)
123
123
  end
124
124
  end
125
125
 
@@ -256,7 +256,7 @@ describe Faraday::Adapter::Typhoeus do
256
256
  end
257
257
 
258
258
  it "sets ssl_verifypeer to false" do
259
- expect(request.options[:ssl_verifypeer]).to be_false
259
+ expect(request.options[:ssl_verifypeer]).to be_falsey
260
260
  end
261
261
  end
262
262
 
@@ -268,7 +268,7 @@ describe Faraday::Adapter::Typhoeus do
268
268
  end
269
269
 
270
270
  it "sets ssl_verifypeer to true" do
271
- expect(request.options[:ssl_verifypeer]).to be_true
271
+ expect(request.options[:ssl_verifypeer]).to be_truthy
272
272
  end
273
273
  end
274
274
  end
@@ -278,7 +278,7 @@ describe Faraday::Adapter::Typhoeus do
278
278
  let(:env) { { :parallel_manager => true } }
279
279
 
280
280
  it "returns true" do
281
- expect(adapter.method(:parallel?).call(env)).to be_true
281
+ expect(adapter.method(:parallel?).call(env)).to be_truthy
282
282
  end
283
283
  end
284
284
 
@@ -286,7 +286,7 @@ describe Faraday::Adapter::Typhoeus do
286
286
  let(:env) { { :parallel_manager => nil } }
287
287
 
288
288
  it "returns false" do
289
- expect(adapter.method(:parallel?).call(env)).to be_false
289
+ expect(adapter.method(:parallel?).call(env)).to be_falsey
290
290
  end
291
291
  end
292
292
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe Typhoeus::EasyFactory do
4
4
  let(:base_url) { "http://localhost:3001" }
5
- let(:hydra) { Typhoeus::Hydra.new(:max_concurrency => 0) }
5
+ let(:hydra) { Typhoeus::Hydra.new(:max_concurrency => 1) }
6
6
  let(:options) { {} }
7
7
  let(:request) { Typhoeus::Request.new(base_url, options) }
8
8
  let(:easy_factory) { described_class.new(request, hydra) }
@@ -48,15 +48,15 @@ describe Typhoeus::EasyFactory do
48
48
  let(:options) { {:connect_timeout => 1} }
49
49
 
50
50
  it "warns" do
51
- easy_factory.should_receive(:warn).with(
51
+ expect(easy_factory).to receive(:warn).with(
52
52
  "Deprecated option connect_timeout. Please use connecttimeout instead."
53
53
  )
54
54
  easy_factory.get
55
55
  end
56
56
 
57
57
  it "passes correct option" do
58
- easy_factory.should_receive(:warn)
59
- easy_factory.easy.should_receive(:connecttimeout=).with(1)
58
+ expect(easy_factory).to receive(:warn)
59
+ expect(easy_factory.easy).to receive(:connecttimeout=).with(1)
60
60
  easy_factory.get
61
61
  end
62
62
  end
@@ -64,19 +64,19 @@ describe Typhoeus::EasyFactory do
64
64
 
65
65
  describe "#set_callback" do
66
66
  it "sets easy.on_complete callback" do
67
- easy_factory.easy.should_receive(:on_complete)
67
+ expect(easy_factory.easy).to receive(:on_complete)
68
68
  easy_factory.send(:set_callback)
69
69
  end
70
70
 
71
71
  it "finishes request" do
72
72
  easy_factory.send(:set_callback)
73
- request.should_receive(:finish)
73
+ expect(request).to receive(:finish)
74
74
  easy_factory.easy.complete
75
75
  end
76
76
 
77
77
  it "resets easy" do
78
78
  easy_factory.send(:set_callback)
79
- easy_factory.easy.should_receive(:reset)
79
+ expect(easy_factory.easy).to receive(:reset)
80
80
  easy_factory.easy.complete
81
81
  end
82
82
 
@@ -88,7 +88,7 @@ describe Typhoeus::EasyFactory do
88
88
 
89
89
  it "adds next request" do
90
90
  easy_factory.hydra.instance_variable_set(:@queued_requests, [request])
91
- easy_factory.hydra.should_receive(:add).with(request)
91
+ expect(easy_factory.hydra).to receive(:add).with(request)
92
92
  easy_factory.send(:set_callback)
93
93
  easy_factory.easy.complete
94
94
  end
@@ -40,7 +40,7 @@ describe Typhoeus::Expectation do
40
40
  let(:expectations) { double(:clear) }
41
41
 
42
42
  it "clears all" do
43
- expectations.should_receive(:clear)
43
+ expect(expectations).to receive(:clear)
44
44
  Typhoeus::Expectation.instance_variable_set(:@expectations, expectations)
45
45
  Typhoeus::Expectation.clear
46
46
  Typhoeus::Expectation.instance_variable_set(:@expectations, nil)
@@ -53,8 +53,8 @@ describe Typhoeus::Expectation do
53
53
 
54
54
  it "finds a matching expectation and returns its next response" do
55
55
  Typhoeus::Expectation.all << expectation
56
- expectation.should_receive(:matches?).with(request).and_return(true)
57
- expectation.should_receive(:response).with(request).and_return(stubbed_response)
56
+ expect(expectation).to receive(:matches?).with(request).and_return(true)
57
+ expect(expectation).to receive(:response).with(request).and_return(stubbed_response)
58
58
 
59
59
  response = Typhoeus::Expectation.response_for(request)
60
60
 
@@ -88,7 +88,7 @@ describe Typhoeus::Expectation do
88
88
 
89
89
  context "when array" do
90
90
  it "adds to responses" do
91
- pending
91
+ skip
92
92
  expectation.and_return([1, 2])
93
93
  expect(expectation.responses).to eq([1, 2])
94
94
  end
@@ -154,13 +154,13 @@ describe Typhoeus::Expectation do
154
154
  let(:request) { double(:base_url => nil) }
155
155
 
156
156
  it "calls url_match?" do
157
- expectation.should_receive(:url_match?)
157
+ expect(expectation).to receive(:url_match?)
158
158
  expectation.matches?(request)
159
159
  end
160
160
 
161
161
  it "calls options_match?" do
162
- expectation.should_receive(:url_match?).and_return(true)
163
- expectation.should_receive(:options_match?)
162
+ expect(expectation).to receive(:url_match?).and_return(true)
163
+ expect(expectation).to receive(:options_match?)
164
164
  expectation.matches?(request)
165
165
  end
166
166
  end
@@ -173,7 +173,7 @@ describe Typhoeus::Expectation do
173
173
  context "when string" do
174
174
  context "when match" do
175
175
  it "returns true" do
176
- expect(url_match).to be_true
176
+ expect(url_match).to be_truthy
177
177
  end
178
178
  end
179
179
 
@@ -181,7 +181,7 @@ describe Typhoeus::Expectation do
181
181
  let(:base_url) { "no_match" }
182
182
 
183
183
  it "returns false" do
184
- expect(url_match).to be_false
184
+ expect(url_match).to be_falsey
185
185
  end
186
186
  end
187
187
  end
@@ -191,7 +191,7 @@ describe Typhoeus::Expectation do
191
191
  let(:base_url) { /example/ }
192
192
 
193
193
  it "returns true" do
194
- expect(url_match).to be_true
194
+ expect(url_match).to be_truthy
195
195
  end
196
196
  end
197
197
 
@@ -199,7 +199,7 @@ describe Typhoeus::Expectation do
199
199
  let(:base_url) { /nomatch/ }
200
200
 
201
201
  it "returns false" do
202
- expect(url_match).to be_false
202
+ expect(url_match).to be_falsey
203
203
  end
204
204
  end
205
205
  end
@@ -208,7 +208,7 @@ describe Typhoeus::Expectation do
208
208
  let(:base_url) { nil }
209
209
 
210
210
  it "returns true" do
211
- expect(url_match).to be_true
211
+ expect(url_match).to be_truthy
212
212
  end
213
213
  end
214
214
 
@@ -216,7 +216,7 @@ describe Typhoeus::Expectation do
216
216
  let(:base_url) { 1 }
217
217
 
218
218
  it "returns false" do
219
- expect(url_match).to be_false
219
+ expect(url_match).to be_falsey
220
220
  end
221
221
  end
222
222
  end
@@ -231,7 +231,7 @@ describe Typhoeus::Expectation do
231
231
  let(:request_options) { options }
232
232
 
233
233
  it "returns true" do
234
- expect(options_match).to be_true
234
+ expect(options_match).to be_truthy
235
235
  end
236
236
  end
237
237
 
@@ -240,7 +240,7 @@ describe Typhoeus::Expectation do
240
240
  let(:request_options) { { :a => 1, :b => 2 } }
241
241
 
242
242
  it "returns true" do
243
- expect(options_match).to be_true
243
+ expect(options_match).to be_truthy
244
244
  end
245
245
  end
246
246
 
@@ -249,7 +249,7 @@ describe Typhoeus::Expectation do
249
249
  let(:request_options) { options }
250
250
 
251
251
  it "returns true" do
252
- expect(options_match).to be_true
252
+ expect(options_match).to be_truthy
253
253
  end
254
254
  end
255
255
 
@@ -258,7 +258,7 @@ describe Typhoeus::Expectation do
258
258
  let(:request_options) { options }
259
259
 
260
260
  it "returns true" do
261
- expect(options_match).to be_true
261
+ expect(options_match).to be_truthy
262
262
  end
263
263
  end
264
264
 
@@ -266,7 +266,7 @@ describe Typhoeus::Expectation do
266
266
  let(:options) { { :a => 1 } }
267
267
 
268
268
  it "returns false" do
269
- expect(options_match).to be_false
269
+ expect(options_match).to be_falsey
270
270
  end
271
271
  end
272
272
  end