Class: A2A::Server::Middleware::Registry

Inherits:
Object
  • Object
show all
Defined in:
lib/a2a/server/middleware.rb

Overview

Middleware registry for managing middleware instances

Instance Method Summary collapse

Constructor Details

#initializeRegistry

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

Parameters:

  • middleware (Object)

    Middleware instance

  • options (Hash)

    Middleware options



35
36
37
# File 'lib/a2a/server/middleware.rb', line 35

def add(middleware, **options)
  @middleware << { instance: middleware, options: options }
end

#allArray

Get all middleware instances

Returns:

  • (Array)

    Array of 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

Parameters:

Yields:

  • Block to execute after all middleware

Returns:

  • (Object)

    Result from the block



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

#clearObject

Clear all middleware



57
58
59
# File 'lib/a2a/server/middleware.rb', line 57

def clear
  @middleware.clear
end

#countInteger

Get middleware count

Returns:

  • (Integer)

    Number of registered middleware



65
66
67
# File 'lib/a2a/server/middleware.rb', line 65

def count
  @middleware.size
end

#include?(middleware) ⇒ Boolean

Check if middleware is registered

Parameters:

  • middleware (Object)

    Middleware instance to check

Returns:

  • (Boolean)

    True if 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

Parameters:

  • middleware (Object)

    Middleware instance to remove



43
44
45
# File 'lib/a2a/server/middleware.rb', line 43

def remove(middleware)
  @middleware.reject! { |m| m[:instance] == middleware }
end