faraday-rate_limiter 0.0.2 → 0.0.3

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