feat(middleware): add middleware stack builder
This commit is contained in:
1 parent
56c01089db
commit
a00dd619c1
1 file changed
+25
@@ -0,0 +1,25 @@
|
||||
module Prism
|
||||
class MiddlewareStack
|
||||
def initialize
|
||||
@entries = []
|
||||
end
|
||||
|
||||
def use(middleware, *args, **kwargs, &block)
|
||||
@entries << [middleware, args, kwargs, block]
|
||||
end
|
||||
|
||||
def build(app)
|
||||
@entries.reverse.reduce(app) do |inner, (middleware, args, kwargs, block)|
|
||||
if kwargs.empty?
|
||||
middleware.new(inner, *args, &block)
|
||||
else
|
||||
middleware.new(inner, *args, **kwargs, &block)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def empty?
|
||||
@entries.empty?
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in new issue
Block a user