Class: A2A::Server::Middleware::ExtractMessage

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

Overview

Extracts text from the request message's parts and sets env["a2a.message"] to the joined text string.

Part of the A2A::Server middleware stack. Requests whose operation carries no message pass through untouched, so env is only present when a message is.

Replaces the common extract_text lambda pattern found in examples:

extract_text = ->(message) {
parts = message.parts || []
parts.filter_map { |p| p.text }.join("\n")
}

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ ExtractMessage

Returns a new instance of ExtractMessage.



24
25
26
# File 'lib/a2a/server/middleware/extract_message.rb', line 24

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/a2a/server/middleware/extract_message.rb', line 28

def call(env)
  request = env["a2a.request"]

  if request.respond_to?(:message) && (message = request.message)
    parts = message.parts || []

    env["a2a.message"] = parts.filter_map { |p|
      p.respond_to?(:text) ? p.text : p["text"]
    }.join("\n")
  end

  @app.call(env)
end