require 'sqreen/ecosystem/module_api' require 'sqreen/ecosystem/module_api/event_listener' require 'sqreen/ecosystem/module_api/message_producer' require 'sqreen/ecosystem/module_api/tracing/server_data' module Sqreen module Ecosystem module Http class RackRequest class HttpServerData include ModuleApi::Tracing::ServerData end include ModuleApi::EventListener include ModuleApi::MessageProducer def setup advice = wrap_for_interest( ModuleApi::Tracing::ServerData, &method(:handle_request) ) on_request_start(&advice) end private def handle_request(rack_request) trace_id = rack_request.env[ModuleApi::TRACE_ID_ENV_KEY] HttpServerData.new( transport: 'http', client_ip: rack_request.ip, tracing_identifier: trace_id ) end end end end end