Class: McpOnRuby::Server::RateLimiter
- Inherits:
-
Object
- Object
- McpOnRuby::Server::RateLimiter
- Defined in:
- lib/mcp_on_ruby/server.rb
Overview
Simple rate limiter
Instance Method Summary collapse
- #allowed?(ip) ⇒ Boolean
-
#initialize(requests_per_minute) ⇒ RateLimiter
constructor
A new instance of RateLimiter.
Constructor Details
#initialize(requests_per_minute) ⇒ RateLimiter
Returns a new instance of RateLimiter.
349 350 351 352 353 |
# File 'lib/mcp_on_ruby/server.rb', line 349 def initialize(requests_per_minute) @requests_per_minute = requests_per_minute @requests = {} @mutex = Mutex.new end |
Instance Method Details
#allowed?(ip) ⇒ Boolean
355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 |
# File 'lib/mcp_on_ruby/server.rb', line 355 def allowed?(ip) return true if @requests_per_minute <= 0 @mutex.synchronize do now = Time.now.to_i minute = now / 60 @requests[ip] ||= {} @requests[ip][minute] ||= 0 # Clean old entries @requests[ip].delete_if { |m, _| m < minute } if @requests[ip][minute] >= @requests_per_minute false else @requests[ip][minute] += 1 true end end end |