Class: Sinew::Connection::RateLimit
- Defined in:
- lib/sinew/connection/rate_limit.rb
Instance Attribute Summary collapse
-
#rate_limit ⇒ Object
readonly
Returns the value of attribute rate_limit.
Instance Method Summary collapse
-
#initialize(app, options = {}) ⇒ RateLimit
constructor
A new instance of RateLimit.
- #on_complete(env) ⇒ Object
- #on_request(_env) ⇒ Object
Constructor Details
#initialize(app, options = {}) ⇒ RateLimit
6 7 8 9 10 11 |
# File 'lib/sinew/connection/rate_limit.rb', line 6 def initialize(app, = {}) super(app) @last_request_tm = @current_request_tm = nil @rate_limit = .fetch(:rate_limit, 1) end |
Instance Attribute Details
#rate_limit ⇒ Object (readonly)
Returns the value of attribute rate_limit.
4 5 6 |
# File 'lib/sinew/connection/rate_limit.rb', line 4 def rate_limit @rate_limit end |
Instance Method Details
#on_complete(env) ⇒ Object
22 23 24 25 26 |
# File 'lib/sinew/connection/rate_limit.rb', line 22 def on_complete(env) # Only rate limit on uncached requests @last_request_tm = @current_request_tm unless env[:httpdisk] @current_request_tm = nil end |
#on_request(_env) ⇒ Object
13 14 15 16 17 18 19 20 |
# File 'lib/sinew/connection/rate_limit.rb', line 13 def on_request(_env) if @last_request_tm sleep = (@last_request_tm + rate_limit) - Time.now sleep(sleep) if sleep > 0 end @current_request_tm = Time.now end |