typhoeus 0.6.8 → 0.6.9

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