Class: CapProxy::RulesEngine
Instance Method Summary collapse
- #apply?(request) ⇒ Boolean
-
#initialize(rules) ⇒ RulesEngine
constructor
A new instance of RulesEngine.
Methods inherited from Filter
Constructor Details
#initialize(rules) ⇒ RulesEngine
Returns a new instance of RulesEngine.
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
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 |