Class: Labkit::RateLimit::Result

Inherits:
Data
  • Object
show all
Defined in:
lib/labkit/rate_limit/result.rb

Overview

Result is the return value of Limiter#check. matched? - true if a rule’s match conditions were satisfied exceeded? - true if the matched rule’s counter exceeded its limit action - the outcome: what the caller should do

:block = rule matched, exceeded, rule configured to block
:log   = rule matched, exceeded, rule configured to log only
:allow = rule matched but count within limit, or
         no rule matched, or error (fail-open)
The rule's configured action is available via rule.action

rule - the matched Rule object (nil when matched? is false) error? - true if Redis was unavailable; result fails open (exceeded? is false) resolved_limit - the resolved limit value as Integer (nil when matched? is false or error) resolved_period - the resolved period value as Integer (nil when matched? is false or error)

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(matched:, action:, exceeded: false, rule: nil, error: false, resolved_limit: nil, resolved_period: nil) ⇒ Result

Returns a new instance of Result.



19
20
21
22
23
# File 'lib/labkit/rate_limit/result.rb', line 19

def initialize(
  matched:, action:, exceeded: false, rule: nil, error: false,
  resolved_limit: nil, resolved_period: nil)
  super
end

Instance Attribute Details

#actionObject (readonly)

Returns the value of attribute action

Returns:

  • (Object)

    the current value of action



18
19
20
# File 'lib/labkit/rate_limit/result.rb', line 18

def action
  @action
end

#errorObject (readonly)

Returns the value of attribute error

Returns:

  • (Object)

    the current value of error



18
19
20
# File 'lib/labkit/rate_limit/result.rb', line 18

def error
  @error
end

#exceededObject (readonly)

Returns the value of attribute exceeded

Returns:

  • (Object)

    the current value of exceeded



18
19
20
# File 'lib/labkit/rate_limit/result.rb', line 18

def exceeded
  @exceeded
end

#matchedObject (readonly)

Returns the value of attribute matched

Returns:

  • (Object)

    the current value of matched



18
19
20
# File 'lib/labkit/rate_limit/result.rb', line 18

def matched
  @matched
end

#resolved_limitObject (readonly)

Returns the value of attribute resolved_limit

Returns:

  • (Object)

    the current value of resolved_limit



18
19
20
# File 'lib/labkit/rate_limit/result.rb', line 18

def resolved_limit
  @resolved_limit
end

#resolved_periodObject (readonly)

Returns the value of attribute resolved_period

Returns:

  • (Object)

    the current value of resolved_period



18
19
20
# File 'lib/labkit/rate_limit/result.rb', line 18

def resolved_period
  @resolved_period
end

#ruleObject (readonly)

Returns the value of attribute rule

Returns:

  • (Object)

    the current value of rule



18
19
20
# File 'lib/labkit/rate_limit/result.rb', line 18

def rule
  @rule
end

Instance Method Details

#error?Boolean

Returns:

  • (Boolean)


33
34
35
# File 'lib/labkit/rate_limit/result.rb', line 33

def error?
  error
end

#exceeded?Boolean

Returns:

  • (Boolean)


29
30
31
# File 'lib/labkit/rate_limit/result.rb', line 29

def exceeded?
  exceeded
end

#matched?Boolean

Returns:

  • (Boolean)


25
26
27
# File 'lib/labkit/rate_limit/result.rb', line 25

def matched?
  matched
end