Class: HeadlessBrowserTool::SessionMiddleware
- Inherits:
-
Object
- Object
- HeadlessBrowserTool::SessionMiddleware
- Defined in:
- lib/headless_browser_tool/session_middleware.rb
Constant Summary collapse
- SESSION_HEADERS =
Headers to check for session ID (in priority order)
%w[ HTTP_X_SESSION_ID HTTP_X_CLIENT_ID ].freeze
- DEFAULT_SESSION =
"default"
Class Attribute Summary collapse
-
.mcp_sessions ⇒ Object
Returns the value of attribute mcp_sessions.
-
.session_mutex ⇒ Object
Returns the value of attribute session_mutex.
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(app) ⇒ SessionMiddleware
constructor
A new instance of SessionMiddleware.
Constructor Details
#initialize(app) ⇒ SessionMiddleware
Returns a new instance of SessionMiddleware.
24 25 26 |
# File 'lib/headless_browser_tool/session_middleware.rb', line 24 def initialize(app) @app = app end |
Class Attribute Details
.mcp_sessions ⇒ Object
Returns the value of attribute mcp_sessions.
21 22 23 |
# File 'lib/headless_browser_tool/session_middleware.rb', line 21 def mcp_sessions @mcp_sessions end |
.session_mutex ⇒ Object
Returns the value of attribute session_mutex.
21 22 23 |
# File 'lib/headless_browser_tool/session_middleware.rb', line 21 def session_mutex @session_mutex end |
Instance Method Details
#call(env) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/headless_browser_tool/session_middleware.rb', line 28 def call(env) # Log request headers if enabled log_request_headers(env) if HeadlessBrowserTool::Server.show_headers # Extract session ID from headers first session_id = extract_session_id(env) # For MCP connections, try to maintain session continuity session_id = get_or_create_mcp_session(env) if session_id == DEFAULT_SESSION && mcp_request?(env) # Store in environment for downstream use env["hbt.session_id"] = session_id # Call the app status, headers, response = @app.call(env) # Add session ID to response headers headers["X-Session-ID"] = session_id # For MCP SSE connections, send session info if env["PATH_INFO"] == "/mcp/sse" && session_id != DEFAULT_SESSION # Store for future requests from this client store_mcp_session(env, session_id) end [status, headers, response] end |