sinatra-rate-limiter 0.4.0 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -3
  3. data/lib/sinatra/rate-limiter.rb +11 -11
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 75be17ee12b4828c4e6640da0d910329df557225
4
- data.tar.gz: fc79ea5b2aae041c72d8e1b4af609a19efa8ce09
3
+ metadata.gz: e2eb98d3fb4708f2dde94dc7aa8fac5e790eea55
4
+ data.tar.gz: eff8f03476da900eff856f94b20989608cd07c1d
5
5
  SHA512:
6
- metadata.gz: b80f42b1423bd489e32c6eb3d01667da5b436f2cf5d32865e7b7ff6eb637765134ab7a0f181135e9ab74eae142f4aa5baf2f326d6baf4ffb952ce649683ad9ab
7
- data.tar.gz: a53669b2bea80a35db6cbd6b37d8383322f709e8b761a862a164bf06b47bde7ae3de256cb25ea7b2c9daeb5edee2d48b29097973b1f45510608cda975921c722
6
+ metadata.gz: cc4c520d384178af38c646dd55aedfcf08ee89d96a464825b4c26f3ddc66e3084e9a0a2831d2e68772073c75dd583b97636acb9a29b0fd96aec670ba2c22661b
7
+ data.tar.gz: 409c06eefea02caf1cea1c6a7b8a5fa662abaa7647a11660011c6a30e2c5ff2fada3e04e8f565a6e5f75e3e5452353922476b1bf4d2c4e1e2b568d07a996cb26
data/README.md CHANGED
@@ -66,9 +66,10 @@ See the _Examples_ section below for usage examples.
66
66
  ### Error handling
67
67
 
68
68
  When a rate limit is exceeded, the exception `Sinatra::RateLimiter::Exceeded`
69
- is thrown. By default, this sends an response code `429` with an informative
70
- plain text error message. You can use Sinatra's error handling to customise
71
- this. E.g.:
69
+ is thrown. By default, this sends an response code `429` with a simple plain
70
+ text error message. You can use Sinatra's error handling to customise this.
71
+
72
+ E.g.:
72
73
 
73
74
  ```
74
75
  error Sinatra::RateLimiter::Exceeded do
@@ -20,20 +20,16 @@ module Sinatra
20
20
  limiter.request = request
21
21
  limiter.options = options
22
22
 
23
- if error_locals = limiter.limits_exceeded?
24
- if limiter.options.send_headers
25
- limiter.headers.each{|h,v| response.headers[h] = v}
26
- response.headers['Retry-After'] = error_locals[:try_again]
27
- end
23
+ limiter.headers.each{|h,v| response.headers[h] = v} if limiter.options.send_headers
24
+
25
+ if (error_locals = limiter.limits_exceeded?)
26
+ response.headers['Retry-After'] = error_locals[:try_again] if limiter.options.send_headers
28
27
 
29
28
  request.env['sinatra.error.rate_limiter'] = Struct.new(*error_locals.keys).new(*error_locals.values)
30
- raise Sinatra::RateLimiter::Exceeded, "Rate limit exceeded:" +
31
- " #{error_locals[:requests]} requests in #{error_locals[:seconds]} seconds." +
32
- " Try again in #{error_locals[:try_again]} seconds."
29
+ raise Sinatra::RateLimiter::Exceeded, "#{bucket.eql?('default') ? 'R' : bucket + ' r'}ate limit exceeded"
33
30
  end
34
31
 
35
32
  limiter.log_request
36
- limiter.headers.each{|h,v| response.headers[h] = v} if limiter.options.send_headers
37
33
  end
38
34
 
39
35
  private
@@ -92,7 +88,11 @@ module Sinatra
92
88
  app.error Sinatra::RateLimiter::Exceeded do
93
89
  status 429
94
90
  content_type 'text/plain'
95
- env['sinatra.error'].message
91
+
92
+ "#{env['sinatra.error.rate_limiter'].bucket.eql?('default') ? 'R' : env['sinatra.error.rate_limiter'].bucket + ' R'}" +
93
+ "ate limit exceeded: #{env['sinatra.error.rate_limiter'].requests} requests" +
94
+ " in #{env['sinatra.error.rate_limiter'].seconds} seconds." +
95
+ " Try again in #{env['sinatra.error.rate_limiter'].try_again} seconds."
96
96
  end
97
97
  end
98
98
 
@@ -144,7 +144,7 @@ module Sinatra
144
144
 
145
145
  if exceeded
146
146
  try_again = limit_reset(exceeded)
147
- return exceeded.merge({try_again: try_again.to_i})
147
+ return exceeded.merge({try_again: try_again.to_i, bucket: @bucket})
148
148
  end
149
149
  end
150
150
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sinatra-rate-limiter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Warren Guy