Class: CapProxy::RulesEngine

Inherits:
Filter
  • Object
show all
Defined in:
lib/cap_proxy/filter.rb

Instance Method Summary collapse

Methods inherited from Filter

from_hash

Constructor Details

#initialize(rules) ⇒ RulesEngine

Returns a new instance of RulesEngine.

Raises:



46
47
48
49
# File 'lib/cap_proxy/filter.rb', line 46

def initialize(rules)
  raise InvalidRule.new("At least one rule is required") if rules.empty?
  @rules = rules
end

Instance Method Details

#apply?(request) ⇒ Boolean

Returns:

  • (Boolean)


51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/cap_proxy/filter.rb', line 51

def apply?(request)
  @rules.all? do |rule|
    case rule[0]
    when :method
      rule[1] == request.http_method
    when :path_regexp
      request.request_url =~ rule[1]
    when :path
      request.request_url == rule[1]
    when :header_regexp
      request.headers.each_pair.any? do |rh, rv|
        rh.downcase == rule[1] && rv =~ rule[2]
      end
    when :header
      request.headers.each_pair.any? do |rh, rv|
        rh.downcase == rule[1] && rv == rule[2]
      end
    else
      raise InvalidRule.new("Invalid rule #{rule.inspect}")
    end
  end
end