Sha256: 09745bd3262fed6ad53d5e866720aea7d8dbe894bef08fcabca4f02f5a52d988

Contents?: true

Size: 1.21 KB

Versions: 7

Compression:

Stored size: 1.21 KB

Contents

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
    # This is helpful for when you need a new exchange handler created for each exchange
    # @param [Class] 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 = '')
      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
      end
    end

    # Set retry_for_success to true, retrying response until a successful status code is returned
    # @param [Integer] retry_count Times to retry to get a positive response
    def expect_positive_status(retry_count: 3)
      define_method('retry_count') { retry_count }
      define_method('retry_for_success?') { true }
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
soaspec-0.2.29 lib/soaspec/exchange/exchange_properties.rb
soaspec-0.2.28 lib/soaspec/exchange/exchange_properties.rb
soaspec-0.2.27 lib/soaspec/exchange/exchange_properties.rb
soaspec-0.2.26 lib/soaspec/exchange/exchange_properties.rb
soaspec-0.2.25 lib/soaspec/exchange/exchange_properties.rb
soaspec-0.2.23 lib/soaspec/exchange/exchange_properties.rb
soaspec-0.2.22 lib/soaspec/exchange/exchange_properties.rb