class Orion::Middleware::RateLimiter

Overview

Rate limiting middleware Prevents abuse by limiting requests per time window

Usage: use Orion::Middleware::RateLimiter.new( requests: 100, period: 1.minute, strategy: :ip # or :session, :custom )

Custom identifier: use Orion::Middleware::RateLimiter.new(requests: 100, period: 1.minute) do |context| context.session[:user_id]? || context.request.remote_address.to_s end

Included Modules

Defined in:

orion/middleware/rate_limiter.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new(requests : Int32, period : Time::Span, strategy : Symbol = :ip, identifier : IdentifierProc | Nil = nil) #

def self.new(requests : Int32, period : Time::Span, &block : IdentifierProc) #

Instance Method Detail

def call(context : HTTP::Server::Context) #

def identifier : IdentifierProc #

def identifier=(identifier : IdentifierProc) #

def period : Time::Span #

def period=(period : Time::Span) #

def requests : Int32 #

def requests=(requests : Int32) #