Class: A2A::Middleware::ExtractMessage

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

Overview

Extracts text from the request message’s parts and sets ‘env` to the joined text string.

Replaces the common ‘extract_text` lambda pattern found in examples:

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

Usage:

on "SendMessage" do
  use A2A::Middleware::ExtractMessage
  respond_with -> (env) {
    text = env["a2a.message"]
    # ...
  }
end

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ ExtractMessage

Returns a new instance of ExtractMessage.



29
30
31
# File 'lib/a2a/middleware/extract_message.rb', line 29

def initialize(app)
  @app = app
end

Instance Method Details

#call(env) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
# File 'lib/a2a/middleware/extract_message.rb', line 33

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

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

  @app.call(env)
end