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