Class: Utopia::Middleware::Filter

Inherits:
Object
  • Object
show all
Defined in:
lib/utopia/middleware/filter.rb

Overview

This class filters a incoming request and only executes a given block if it matches the given filter path.

Instance Method Summary collapse

Constructor Details

#initialize(app, filter, &block) ⇒ Filter

Returns a new instance of Filter.



28
29
30
31
32
33
34
# File 'lib/utopia/middleware/filter.rb', line 28

def initialize(app, filter, &block)
  @app = app
  @filter = filter
  branch = Rack::Builder.new(&block)
  branch.run(@app)
  @process = branch.to_app
end

Instance Method Details

#applicable(request) ⇒ Object



36
37
38
# File 'lib/utopia/middleware/filter.rb', line 36

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

#call(env) ⇒ Object



40
41
42
43
44
45
46
47
48
# File 'lib/utopia/middleware/filter.rb', line 40

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

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