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,
lib/api_valve/middleware/permission_check.rb

Defined Under Namespace

Classes: ErrorHandling, Item, Logging, PermissionCheck, Router

Instance Method Summary collapse

Constructor Details

#initializeMiddleware

Returns a new instance of Middleware.



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

def initialize
  @registry = []
end

Instance Method Details

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



14
15
16
# 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) ⇒ Object



18
19
20
# 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) ⇒ Object



22
23
24
# 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_sObject



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

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

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



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

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