Sha256: f3b88fde5b5f5df92d6a53e168dfd30143b8871d7fd9679e78b213ee108c2247

Contents?: true

Size: 798 Bytes

Versions: 4

Compression:

Stored size: 798 Bytes

Contents

#	This file is part of the "Utopia Framework" project, and is released under the MIT license.
#	Copyright 2010 Samuel Williams. All rights reserved.
#	See <utopia.rb> for licensing details.
require 'utopia/middleware'

module Utopia
	module Middleware

		# This class filters a incoming request and only executes a given block if it matches the given filter path.
		class Filter
			def initialize(app, filter, &block)
				@app = app
				@filter = filter
				branch = Rack::Builder.new(&block)
				branch.run(@app)
				@process = branch.to_app
			end

			def applicable(request)
				return request.path.index(@filter) != nil
			end

			def call(env)
				request = Rack::Request.new(env)

				if applicable(request)
					@process.call(env)
				else
					@app.call(env)
				end
			end
		end

	end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
utopia-0.10.0 lib/utopia/middleware/filter.rb
utopia-0.9.61 lib/utopia/middleware/filter.rb
utopia-0.9.60 lib/utopia/middleware/filter.rb
utopia-0.9.59 lib/utopia/middleware/filter.rb