galago-rate_limiter 0.0.3 → 0.0.4

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: f6e0d5c290a7a02a64fea368a8e9e751555646f1
4
- data.tar.gz: eacb1622bc6fe97c08248ba25a0b33f9f8a90bad
3
+ metadata.gz: 0080799d8124b3365796777bfb21d0eb11724066
4
+ data.tar.gz: cf65551e8e8e21c38b26184c663822f3f5cb0890
5
5
  SHA512:
6
- metadata.gz: 63bd3d93e8585df34f194ada5de47562bb803d54bdc9ea4ef455fdce6589b782f9164667f091930d6b6e7af1a4305f020e2adb8a3c31fe3655d7e9b80fc949f8
7
- data.tar.gz: 77d1fff80116a15d6df892e61f0099dbeb55b2dc10eddf0cd0b2e6620779fec27b1aac7893114eb85d801b75d939e51de07d305cd0688a4e7450d7270cb7cd39
6
+ metadata.gz: 1728d0d5a24fcf6eb939b2c41fff0bc2b87c93ccc5a565b988c0c36f138e9394629ef3a3b76351d20298f68f92446d2dd2f02aaed76b8a49ecd444b4556f7783
7
+ data.tar.gz: 8f616cf90aab44f5182a21e0e898bd630a8cf2f46edf955e07f2794531668e29c2751db0423c86789b05e3f5753d029768480a309d804afeb00b5477fa3a4212
@@ -7,12 +7,14 @@ module Galago
7
7
 
8
8
  DEFAULT_LIMIT = 5_000
9
9
  DEFAULT_API_KEY_HEADER = 'HTTP_X_API_KEY'.freeze
10
+ DEFAULT_CALLBACK = Proc.new {}
10
11
 
11
12
  attr_reader :api_key_header, :limit, :counter
12
13
 
13
14
  def initialize
14
15
  @limit = DEFAULT_LIMIT
15
16
  @api_key_header = DEFAULT_API_KEY_HEADER
17
+ @callback = DEFAULT_CALLBACK
16
18
  end
17
19
 
18
20
  def limit=(limit)
@@ -36,6 +38,14 @@ module Galago
36
38
  end
37
39
  end
38
40
 
41
+ def callback(&block)
42
+ if block_given?
43
+ @callback = block
44
+ else
45
+ @callback
46
+ end
47
+ end
48
+
39
49
  def reset!
40
50
  @limit = DEFAULT_LIMIT
41
51
  @api_key_header = DEFAULT_API_KEY_HEADER
@@ -26,6 +26,7 @@ module Galago
26
26
  throughput = @counter.increment(api_key, 1, expires_in: expires_in)
27
27
 
28
28
  if limit_exceeded?(throughput)
29
+ execute_callback(api_key)
29
30
  status = 403
30
31
  headers = {
31
32
  X_LIMIT_HEADER => @config.limit.to_s,
@@ -45,6 +46,10 @@ module Galago
45
46
 
46
47
  private
47
48
 
49
+ def execute_callback(api_key)
50
+ @config.callback.call(api_key)
51
+ end
52
+
48
53
  def limit_exceeded?(throughput)
49
54
  throughput > @config.limit
50
55
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: galago-rate_limiter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joe Karayusuf
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-22 00:00:00.000000000 Z
11
+ date: 2015-03-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rack-test
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: dalli
43
57
  requirement: !ruby/object:Gem::Requirement