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