Class: ApiValve::Middleware

Inherits:
Object
  • Object
show all
Defined in:
lib/api_valve/middleware.rb,
lib/api_valve/middleware/router.rb,
lib/api_valve/middleware/logging.rb,
lib/api_valve/middleware/error_handling.rb

Defined Under Namespace

Classes: ErrorHandling, Item, Logging, Router

Instance Method Summary collapse

Constructor Details

#initialize ⇒ Middleware

Returns a new instance of Middleware.



9
10
11
# File 'lib/api_valve/middleware.rb', line 9

def initialize
  @registry = []
end

Instance Method Details

#insert_after(other, middleware, *args, &block) ⇒ Object



13
14
15
# File 'lib/api_valve/middleware.rb', line 13

def insert_after(other, middleware, *args, &block)
  @registry.insert position(other) + 1, to_item(middleware, *args, &block)
end

#insert_before(other, middleware, *args, &block) ⇒ Object



17
18
19
# File 'lib/api_valve/middleware.rb', line 17

def insert_before(other, middleware, *args, &block)
  @registry.insert position(other), to_item(middleware, *args, &block)
end

#to_app(root_app) ⇒ Object



21
22
23
# File 'lib/api_valve/middleware.rb', line 21

def to_app(root_app)
  @registry.reverse.inject(root_app) { |memo, obj| obj.proc.call memo }
end

#to_s ⇒ Object



25
26
27
# File 'lib/api_valve/middleware.rb', line 25

def to_s
  @registry.map(&:klass).join("\n")
end

#use(middleware, *args, &block) ⇒ Object



29
30
31
# File 'lib/api_valve/middleware.rb', line 29

def use(middleware, *args, &block)
  @registry << to_item(middleware, *args, &block)
end