class Rhod::Middleware

Public Class Methods

new() click to toggle source
# File lib/rhod/middleware.rb, line 4
def initialize
  @stack = []
end

Public Instance Methods

build_stack() click to toggle source
# File lib/rhod/middleware.rb, line 12
def build_stack
  @stack = @stack.map do |current_middleware|
    klass, args, block = current_middleware

    if klass.is_a?(Class)
      klass.new(*args, &block)
    else
      raise Rhod::InvalidMiddleware, "Unable to call middleware #{current_middleware}"
    end
  end
end
on(event, env) click to toggle source
# File lib/rhod/middleware.rb, line 24
def on(event, env)
  @stack.reduce(env) do |e, current_middleware|
    if current_middleware.respond_to?(:on)
      e = current_middleware.on(event, e)
    end
    e
  end
end
use(middleware, *args, &block) click to toggle source
# File lib/rhod/middleware.rb, line 8
def use(middleware, *args, &block)
  @stack << [middleware, args, block]
end