Class: A2A::Server::Middleware::Registry
- Inherits:
-
Object
- Object
- A2A::Server::Middleware::Registry
- Defined in:
- lib/a2a/server/middleware.rb
Overview
Middleware registry for managing middleware instances
Instance Method Summary collapse
-
#add(middleware, **options) ⇒ Object
Add middleware to the registry.
-
#all ⇒ Array
Get all middleware instances.
-
#call(request, context) { ... } ⇒ Object
Execute middleware chain.
-
#clear ⇒ Object
Clear all middleware.
-
#count ⇒ Integer
Get middleware count.
-
#include?(middleware) ⇒ Boolean
Check if middleware is registered.
-
#initialize ⇒ Registry
constructor
A new instance of Registry.
-
#remove(middleware) ⇒ Object
Remove middleware from the registry.
Constructor Details
#initialize ⇒ Registry
Returns a new instance of Registry.
26 27 28 |
# File 'lib/a2a/server/middleware.rb', line 26 def initialize @middleware = [] end |
Instance Method Details
#add(middleware, **options) ⇒ Object
Add middleware to the registry
35 36 37 |
# File 'lib/a2a/server/middleware.rb', line 35 def add(middleware, **) @middleware << { instance: middleware, options: } end |
#all ⇒ Array
Get all middleware instances
51 52 53 |
# File 'lib/a2a/server/middleware.rb', line 51 def all @middleware.pluck(:instance) end |
#call(request, context) { ... } ⇒ Object
Execute middleware chain
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/a2a/server/middleware.rb', line 85 def call(request, context, &block) chain = block # Build middleware chain from the end backwards @middleware.reverse_each do |middleware_def| middleware = middleware_def[:instance] current_chain = chain chain = lambda do if middleware.respond_to?(:call) middleware.call(request, context) { current_chain.call } else current_chain.call end end end # Execute the chain chain.call end |
#clear ⇒ Object
Clear all middleware
57 58 59 |
# File 'lib/a2a/server/middleware.rb', line 57 def clear @middleware.clear end |
#count ⇒ Integer
Get middleware count
65 66 67 |
# File 'lib/a2a/server/middleware.rb', line 65 def count @middleware.size end |
#include?(middleware) ⇒ Boolean
Check if middleware is registered
74 75 76 |
# File 'lib/a2a/server/middleware.rb', line 74 def include?(middleware) @middleware.any? { |m| m[:instance] == middleware } end |
#remove(middleware) ⇒ Object
Remove middleware from the registry
43 44 45 |
# File 'lib/a2a/server/middleware.rb', line 43 def remove(middleware) @middleware.reject! { |m| m[:instance] == middleware } end |