faraday-rate_limiter 0.0.2 → 0.0.3

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: 1081c04a778655e5ad856245885e7fbc406d0418
4
- data.tar.gz: 47259209f221507438b2a8b330e56128eb6d4d87
3
+ metadata.gz: 29be4e16b6bbfc73da1e297934382ae2a1aa9c7f
4
+ data.tar.gz: bfde830f34f2eaac789461ae4e2ce942c95d3b01
5
5
  SHA512:
6
- metadata.gz: e3402d1e5d0dcf66ec85355f8d181235530fc06ab7d7364c805ec357e74dbba6138dcedbc5767e82c8e5dd92d67996cdab5587fde28565d5a93f2953273e9e3a
7
- data.tar.gz: a4e08c2b52ffeb4dfc272f6528b84eeef51b8e5a1e416877b42d9fb08395700a9e7251e6abf274bf4b03cc11eac3ab24a17bb2437d62907ed08b1a36a50f584a
6
+ metadata.gz: fc59cdd063d6a2cad6c85063da1fa4f7d13f1c735c0bcbe40be3d041a48de6ce20342ae7cf4b06a0ee57ad3b9e414ae6b5d2a0c8def72790abbc734e910c5efb
7
+ data.tar.gz: 8d277892aee46d5e1d9482c05cd4bc77514b9fb342b9fa8b14cad4d00c6df36e51df6135d86fc821e613a9ccf4cf1af0f402aa2f373e9e2b863d02becd4af63c
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = 'faraday-rate_limiter'
7
- spec.version = '0.0.2'
7
+ spec.version = '0.0.3'
8
8
  spec.authors = ['Cameron Martin']
9
9
  spec.email = ['cameronmartin123@gmail.com']
10
10
  spec.description = %q{Limits the rate of faraday requests}
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.add_development_dependency 'bundler', '~> 1.3'
21
21
  spec.add_development_dependency 'rake'
22
+ spec.add_development_dependency 'rspec'
22
23
 
23
24
  spec.add_runtime_dependency 'faraday'
24
25
  end
@@ -3,16 +3,19 @@ module Faraday
3
3
  def initialize(app, options={})
4
4
  super(app)
5
5
  @interval = options.fetch(:interval, 1)
6
- @last_request_time = Time.now
6
+ @last_request_time = nil
7
7
  end
8
8
 
9
9
  def call(env)
10
10
 
11
- time_since_last_request = Time.now - @last_request_time
12
11
 
13
- if time_since_last_request < @interval
14
- sleep(@interval-time_since_last_request)
12
+ if @last_request_time
13
+ time_since_last_request = Time.now - @last_request_time
14
+ if time_since_last_request < @interval
15
+ sleep(@interval-time_since_last_request)
16
+ end
15
17
  end
18
+
16
19
  @last_request_time = Time.now
17
20
 
18
21
  @app.call(env)
@@ -20,6 +23,4 @@ module Faraday
20
23
  end
21
24
  end
22
25
 
23
- if Faraday::Request.respond_to? :register_middleware
24
- Faraday::Request.register_middleware :rate_limiter => Faraday::RateLimiter
25
- end
26
+ Faraday::Request.register_middleware :rate_limiter => Faraday::RateLimiter
@@ -0,0 +1,33 @@
1
+ require 'rspec'
2
+
3
+ require 'faraday'
4
+ require 'faraday-rate_limiter'
5
+
6
+ describe Faraday::RateLimiter do
7
+
8
+ let(:interval) { 5 }
9
+ let(:conn) do
10
+ Faraday.new do |conn|
11
+ conn.request :rate_limiter, interval: interval
12
+ conn.adapter :test do |stub|
13
+ stub.get('/index') {[ 200, {}, '' ]}
14
+ end
15
+ end
16
+ end
17
+
18
+ it 'should return the first result without delay' do
19
+ t1 = Time.now
20
+ conn.get('/index')
21
+ t2 = Time.now
22
+ expect((t2 - t1).abs < interval).to be_true
23
+ end
24
+
25
+ it 'should wait between requests' do
26
+ t1 = Time.now
27
+ conn.get('/index')
28
+ conn.get('/index')
29
+ t2 = Time.now
30
+ expect((t2 - t1).abs > interval).to be_true
31
+ end
32
+
33
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: faraday-rate_limiter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cameron Martin
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: faraday
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -67,6 +81,7 @@ files:
67
81
  - faraday-rate_limiter.gemspec
68
82
  - lib/faraday-rate_limiter.rb
69
83
  - lib/faraday/rate_limiter.rb
84
+ - spec/integration/rate_limiter_spec.rb
70
85
  homepage: ''
71
86
  licenses:
72
87
  - MIT
@@ -91,4 +106,5 @@ rubygems_version: 2.2.1
91
106
  signing_key:
92
107
  specification_version: 4
93
108
  summary: Limits the rate of faraday requests
94
- test_files: []
109
+ test_files:
110
+ - spec/integration/rate_limiter_spec.rb