Sha256: e6e3f0c4a07056ec501a0432f5d1c0dfc2b7f05e8436def97347609b2726917c

Contents?: true

Size: 1.26 KB

Versions: 1

Compression:

Stored size: 1.26 KB

Contents

module Rack
  class Rewrite
    class ConditionSet
  
      attr_reader :parent_set, :actions, :conditions
  
      def initialize(parent_set, conditions = nil)
        @parent_set = parent_set
        @conditions = conditions
        @actions = []
      end

      def satisfied?(env)
        if conditions
      
          uri_ok = conditions.key?(:path_info) ? conditions[:path_info] === env['PATH_INFO'] : true
          method_ok = conditions.key?(:method) ? conditions[:method] === env['REQUEST_METHOD'].downcase : true
          host_ok = conditions.key?(:host) ? conditions[:host] === env['HTTP_HOST'] : true
          port_ok = conditions.key?(:port) ? conditions[:port] === env['SERVER_PORT'].to_i : true
          scheme_ok = conditions.key?(:scheme) ? conditions[:scheme] === env['rack.url_scheme'] : true
          if conditions.key?(:params)
            req = Rack::Request.new(env)
            params_ok = true
            conditions[:params].each do |key, test|
              params_ok = test === req.params[key.to_s]
              break unless params_ok
            end
          else
            params_ok = true
          end

          uri_ok && method_ok && host_ok && port_ok && scheme_ok && params_ok
        else
          true
        end
      end
  
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
joshbuddy-rack-rewrite-0.0.4 lib/rack_rewrite/condition_set.rb