Async::HTTP::CaptureSourceAsyncHTTPCaptureEnvironment

module Environment

A flat environment module for HTTP capture services.

Provides simple, declarative configuration for recording and replaying HTTP interactions. Override these methods in your service to customize behavior.

Definitions

def capture_cassette_directory

Directory path to load cassettes from for replay warmup. Override this method to specify a different directory.

Implementation

def capture_cassette_directory
	"cassette/warmup"
end

def capture_recordings_directory

Directory path to save recordings to. Override this method to specify where recordings should be saved.

Implementation

def capture_recordings_directory
	"cassette/recordings"
end

def capture_console_logging

Whether to enable console logging of interactions (default: false). Override this method to enable console output.

Implementation

def capture_console_logging
	true
end

def capture_cassette

Load the cassette for replay if configured

Implementation

def capture_cassette
	if capture_cassette_directory && File.directory?(capture_cassette_directory)
		Cassette.load(capture_cassette_directory)
	end
end

def capture_recording_store

Get the recording store if configured

Implementation

def capture_recording_store
	stores = []
	
	# Add file storage if directory configured
	if capture_recordings_directory
		stores << CassetteStore.new(capture_recordings_directory)
	end
	
	# Add console logging if enabled
	if capture_console_logging
		stores << ConsoleStore.new
	end
	
	# Return combined store or nil
	case stores.length
	when 0
		nil
	when 1
		stores.first
	else
		# Multiple stores - combine them
		proc do |interaction|
			stores.each {|store| store.call(interaction)}
		end
	end
end

def capture_middleware_class

The middleware class to use for recording.

Implementation

def capture_middleware_class
	Middleware
end

def capture_middleware(middleware)

Wrap the middleware with the recording middleware.

Signature

parameter middleware Middleware

The middleware to wrap.

parameter store CassetteStore

The store to use for recording.

returns Middleware

The wrapped middleware.

Implementation

def capture_middleware(middleware)
	if store = capture_recording_store
		middleware = capture_middleware_class.new(middleware, store: store)
	end
	
	return middleware
end

def middleware

Set up middleware chain with recording support.

Implementation

def middleware
	# Get the underlying application by calling super:
	middleware = super
	
	# Warm up the application with recorded interactions if available:
	capture_cassette&.replay(middleware)
	
	# Wrap with recording middleware if store is configured
	return capture_middleware(middleware)
end