class SslEnforcerConstraint

Public Class Methods

new(name, rule, request) click to toggle source
# File lib/rack/ssl-enforcer/constraint.rb, line 2
def initialize(name, rule, request)
  @name    = name
  @rule    = rule
  @request = request
end

Public Instance Methods

matches?() click to toggle source
# File lib/rack/ssl-enforcer/constraint.rb, line 8
def matches?
  if @rule.is_a?(String) && [:only, :except].include?(@name)
    result = tested_string[0, @rule.size].send(operator, @rule)
  elsif @rule.respond_to?(:call)
    result = @rule.call(@request)
  else
    result = tested_string.send(operator, @rule)
  end

  negate_result? ? !result : result
end

Private Instance Methods

negate_result?() click to toggle source
# File lib/rack/ssl-enforcer/constraint.rb, line 22
def negate_result?
  @name.to_s =~ /except/
end
operator() click to toggle source
# File lib/rack/ssl-enforcer/constraint.rb, line 26
def operator
  @rule.is_a?(Regexp) ? "=~" : "=="
end
tested_string() click to toggle source
# File lib/rack/ssl-enforcer/constraint.rb, line 30
def tested_string
  case @name.to_s
  when /hosts/
    @request.host
  when /methods/
    @request.request_method
  when /environments/
    ENV["RACK_ENV"] || ENV["RAILS_ENV"] || ENV["ENV"]
  when /agents/
    @request.user_agent
  else
    @request.path
  end
end