Async::HTTP::CaptureSourceAsyncHTTPCaptureConsoleStore

class ConsoleStore

Store implementation that logs interactions to the console.

This store outputs complete interaction data via the Console gem, particularly useful for debugging network errors and monitoring HTTP traffic.

Definitions

def initialize(logger: Console)

Initialize the console store.

Signature

parameter logger Console::Logger

The logger to use (defaults to Console).

Implementation

def initialize(logger: Console)
	@logger = logger
end

def call(interaction)

Log an interaction to the console with full fidelity. The output includes complete interaction data to enable debugging and reconstruction.

Signature

parameter interaction Interaction

The interaction to log.

Implementation

def call(interaction)
	# Let the interaction serialize itself:
	serializable_data = interaction.serialize
	
	request_info = extract_request_info(serializable_data)
	
	if serializable_data[:error]
		# Log errors with full interaction data:
		@logger.error(self, "HTTP Error: #{request_info}") {JSON.pretty_generate(serializable_data)}
	elsif serializable_data[:response]
		# Log successful interactions with summary + full data:
		status = serializable_data[:response][:status]
		@logger.info(self, "#{request_info} -> #{status}") {JSON.pretty_generate(serializable_data)}
	else
		# Log request-only interactions:
		@logger.debug(self, "Recorded: #{request_info}") {JSON.pretty_generate(serializable_data)}
	end
end

def extract_request_info(data)

Extract request info for summary logging.

Signature

parameter data Hash

The serialized interaction data.

returns String

A summary of the request.

Implementation

def extract_request_info(data)
	return "Unknown request" unless data[:request]
	
	method = data[:request][:method] || "UNKNOWN"
	path = data[:request][:path] || "/"
	"#{method} #{path}"
end