Class: RequestTracker::RateLimiters::Stack
- Inherits:
-
Object
- Object
- RequestTracker::RateLimiters::Stack
show all
- Defined in:
- lib/request_tracker/rate_limiters/stack.rb
Overview
Instance Method Summary
collapse
Constructor Details
#initialize ⇒ Stack
Returns a new instance of Stack.
7
8
9
|
# File 'lib/request_tracker/rate_limiters/stack.rb', line 7
def initialize
@rate_limiter_klasses = []
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name, *args, &block) ⇒ Object
50
51
52
53
54
55
56
|
# File 'lib/request_tracker/rate_limiters/stack.rb', line 50
def method_missing(method_name, *args, &block)
if @rate_limiter_klasses.respond_to?(method_name)
@rate_limiter_klasses.send(method_name, *args, &block)
else
super
end
end
|
Instance Method Details
#active_rate_limiter(request, cookie) ⇒ Object
41
42
43
44
45
46
47
48
|
# File 'lib/request_tracker/rate_limiters/stack.rb', line 41
def active_rate_limiter(request, cookie)
@rate_limiter_klasses.each do |rate_limiter_klass|
rate_limiter = rate_limiter_klass.new(request, cookie)
return rate_limiter if rate_limiter.active?
end
nil
end
|
#append(rate_limiter_klass) ⇒ Object
23
24
25
|
# File 'lib/request_tracker/rate_limiters/stack.rb', line 23
def append(rate_limiter_klass)
@rate_limiter_klasses.append(rate_limiter_klass)
end
|
#include?(reference_klass) ⇒ Boolean
15
16
17
|
# File 'lib/request_tracker/rate_limiters/stack.rb', line 15
def include?(reference_klass)
@rate_limiter_klasses.include?(reference_klass)
end
|
#insert_after(existing_rate_limiter_klass, new_rate_limiter_klass) ⇒ Object
34
35
36
37
38
39
|
# File 'lib/request_tracker/rate_limiters/stack.rb', line 34
def insert_after(existing_rate_limiter_klass, new_rate_limiter_klass)
@rate_limiter_klasses.insert(
get_rate_limiter_index(existing_rate_limiter_klass) + 1,
new_rate_limiter_klass,
)
end
|
#insert_before(existing_rate_limiter_klass, new_rate_limiter_klass) ⇒ Object
27
28
29
30
31
32
|
# File 'lib/request_tracker/rate_limiters/stack.rb', line 27
def insert_before(existing_rate_limiter_klass, new_rate_limiter_klass)
@rate_limiter_klasses.insert(
get_rate_limiter_index(existing_rate_limiter_klass),
new_rate_limiter_klass,
)
end
|
#prepend(rate_limiter_klass) ⇒ Object
19
20
21
|
# File 'lib/request_tracker/rate_limiters/stack.rb', line 19
def prepend(rate_limiter_klass)
@rate_limiter_klasses.prepend(rate_limiter_klass)
end
|
#to_s ⇒ Object
11
12
13
|
# File 'lib/request_tracker/rate_limiters/stack.rb', line 11
def to_s
@rate_limiter_klasses.map { |klass| klass.to_s }.join(", ")
end
|