Class: Reaxar::Middleware::MiddlewareStack
- Inherits:
-
Object
- Object
- Reaxar::Middleware::MiddlewareStack
- Defined in:
- lib/reaxar/middleware/middleware_stack.rb
Overview
Manages a stack of HTTP middleware and applies them to requests and responses.
Instance Method Summary collapse
-
#initialize ⇒ MiddlewareStack
constructor
Initializes a new, empty middleware stack.
-
#process_response(response, request) ⇒ Object, Symbol
Runs all middleware on the response in reverse order.
-
#run(request) ⇒ Hash
Runs all middleware on the request in order.
-
#use(middleware) ⇒ void
Adds a middleware to the stack.
Constructor Details
#initialize ⇒ MiddlewareStack
Initializes a new, empty middleware stack.
14 15 16 |
# File 'lib/reaxar/middleware/middleware_stack.rb', line 14 def initialize @stack = [] end |
Instance Method Details
#process_response(response, request) ⇒ Object, Symbol
Runs all middleware on the response in reverse order.
38 39 40 41 42 43 44 45 46 |
# File 'lib/reaxar/middleware/middleware_stack.rb', line 38 def process_response(response, request) @stack.reverse.reduce(response) do |resp, middleware| result = middleware.process_response(resp, request) return :retry_request if result == :retry_request result || resp end end |
#run(request) ⇒ Hash
Runs all middleware on the request in order.
28 29 30 31 32 |
# File 'lib/reaxar/middleware/middleware_stack.rb', line 28 def run(request) @stack.reduce(request) do |req, middleware| middleware.process_request(req) || req end end |
#use(middleware) ⇒ void
This method returns an undefined value.
Adds a middleware to the stack.
21 22 23 |
# File 'lib/reaxar/middleware/middleware_stack.rb', line 21 def use(middleware) @stack << middleware end |