lib/soaspec/exchange/exchange_properties.rb in soaspec-0.3.7 vs lib/soaspec/exchange/exchange_properties.rb in soaspec-0.3.8
- old
+ new
@@ -3,14 +3,27 @@
module Soaspec
# Convenience methods to set Exchange specific properties
# Will be used when creating a subclass of Exchange
module ExchangeProperties
# Set default exchange handler for this exchange
+ #
+ # @example Custom Exchange sub class always using particular exchange handler
+ # class CustomExchange < Exchange
+ # default_handler EchoService
+ # end
+ # CustomExchange.exchange_handler.class # => EchoService
+ #
+ # @example Custom Exchange that has handler with particular properties
+ # class PreExchange < Exchange
+ # default_handler BLZService, 'Pre Exchange', operation: :get_bank
+ # end
+ # PreExchange.new.request_parameters.operation # => :get_bank
+ #
# This is helpful for when you need a new exchange handler created for each exchange
# @param [< ExchangeHandler] handler_class Class of ExchangeHandler to set Exchange to use
# @param [String] name Name to call handler when it's instantiated (Defaults to class name)
# @param [Hash] params Hash of parameters to set for instance of ExchangeHandler
- def default_handler(handler_class, name = handler_class.to_s, params = '')
+ def default_handler(handler_class, name = handler_class.to_s, params = {})
define_method('default_handler_used') do
params_used = Hash[params.map do |k, param|
[k, param.is_a?(String) ? ERB.new(param).result(binding) : param]
end]
handler_class.new name, params_used