class ApiValve::Middleware

Constants

Item

Public Class Methods

new() click to toggle source
# File lib/api_valve/middleware.rb, line 10
def initialize
  @registry = []
end

Public Instance Methods

insert_after(other, middleware, *args, &block) click to toggle source
# File lib/api_valve/middleware.rb, line 14
def insert_after(other, middleware, *args, &block)
  @registry.insert position(other) + 1, to_item(middleware, *args, &block)
end
insert_before(other, middleware, *args, &block) click to toggle source
# File lib/api_valve/middleware.rb, line 18
def insert_before(other, middleware, *args, &block)
  @registry.insert position(other), to_item(middleware, *args, &block)
end
to_app(root_app) click to toggle source
# File lib/api_valve/middleware.rb, line 22
def to_app(root_app)
  @registry.reverse.inject(root_app) { |memo, obj| obj.proc.call memo }
end
to_s() click to toggle source
# File lib/api_valve/middleware.rb, line 26
def to_s
  @registry.map(&:klass).join("\n")
end
use(middleware, *args, &block) click to toggle source
# File lib/api_valve/middleware.rb, line 30
def use(middleware, *args, &block)
  @registry << to_item(middleware, *args, &block)
end

Private Instance Methods

position(klass) click to toggle source
# File lib/api_valve/middleware.rb, line 36
def position(klass)
  @registry.index { |item| item.klass == klass }
end
to_item(middleware, *args, &block) click to toggle source
# File lib/api_valve/middleware.rb, line 40
def to_item(middleware, *args, &block)
  Item.new(middleware, proc { |app| middleware.new(app, *args, &block) })
end