aboutsummaryrefslogblamecommitdiffstats
path: root/actionpack/lib/action_dispatch/middleware/cascade.rb
blob: 9f5c9891f0f5cd0cade44e9fea9ac6b2eff97bc0 (plain) (tree)




























                                                     
module ActionDispatch
  class Cascade
    def self.new(*apps)
      apps = apps.flatten

      case apps.length
      when 0
        raise ArgumentError, "app is required"
      when 1
        apps.first
      else
        super(apps)
      end
    end

    def initialize(apps)
      @apps = apps
    end

    def call(env)
      result = nil
      @apps.each do |app|
        result = app.call(env)
        break unless result[1]["X-Cascade"] == "pass"
      end
      result
    end
  end
end