sinatra-rate-limiter 0.4.0 → 0.4.1

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