class Soaspec::ExchangeHandler
Inherit this for a class describing how to implement a particular exchange. Has methods common to Soaspec
framework for working with Exchange/Handler pair
Attributes
@return [Exception] Exception if raised
@return [Symbol] Option used to generate Request Body. Either :hash or :template
@return [String] Name of the template file to be used in the API request
Public Class Methods
Set instance variable name @param [String, Symbol] name Name used when describing API test @param [Hash] _options Parameters defining handler. Used in descendants
# File lib/soaspec/exchange_handlers/exchange_handler.rb, line 36 def initialize(name = self.class.to_s, _options = {}) use self.request_option = :hash raise ArgumentError, 'Cannot define both template_name and default_hash' if respond_to?(:template_name_value) && respond_to?(:default_hash_value) @template_name = respond_to?(:template_name_value) ? template_name_value : '' @default_hash = respond_to?(:default_hash_value) ? default_hash_value : {} @name = name end
Use an instance of this ExchangeHandler
in any further Exchange's This is a convenience method as it creates an ExchangeHandler
behind the scenes @return [ExchangeHandler] Exchange
handler instance created
# File lib/soaspec/exchange_handlers/exchange_handler.rb, line 19 def self.use new.use end
Public Instance Methods
Set the default hash representing data to be used in making a request This will set the @request_option instance variable too @param [Hash] hash Hash
to send in request body by default
# File lib/soaspec/exchange_handlers/exchange_handler.rb, line 63 def default_hash=(hash) self.request_option = :hash @default_hash = Soaspec.always_use_keys? ? hash.transform_keys_to_symbols : hash end
Explicitly defined elements for which a path has been predefined
# File lib/soaspec/exchange_handlers/exchange_handler.rb, line 29 def elements public_methods.select { |i| i[/__custom_path_.+/] } end
Set instance variable and remove it from Hash
@param [Hash] hash Hash
to remove/retrieve keys from @param [String,Symbol] key Key to remove and to set instance variable for
# File lib/soaspec/exchange_handlers/exchange_handler.rb, line 93 def set_remove_key(hash, key) return unless hash.key? key __send__("#{key}=", hash[key]) hash.delete key end
Set instance variable for each key in hash remove it from Hash
@param [Hash] hash with items to remove from @param [Array] keys List of keys to remove from hash, setting each one
# File lib/soaspec/exchange_handlers/exchange_handler.rb, line 86 def set_remove_keys(hash, keys) keys.each { |key| set_remove_key(hash, key) } end
Stores a value in a method that can be accessed by the provided name @param [Symbol] name Name of method to use to access this value within handler @param [String] value Value to store
# File lib/soaspec/exchange_handlers/exchange_handler.rb, line 79 def store(name, value) define_singleton_method('__stored_val__' + name.to_s) { value } end
Set the request option type and the template name Erb is used to parse the template file, executing Ruby code in `<%= %>` blocks to work out the final request @param [String] name Name of file inside 'template' folder excluding extension
# File lib/soaspec/exchange_handlers/exchange_handler.rb, line 71 def template_name=(name) self.request_option = :template @template_name = name end
Sets api handler variable globally. This is used in 'Exchange' class @return [String] Name set upon initialisation
# File lib/soaspec/exchange_handlers/exchange_handler.rb, line 55 def to_s use @name.to_s end
Set Api handler used by Exchange
class to this handler @return [Self]
# File lib/soaspec/exchange_handlers/exchange_handler.rb, line 48 def use Soaspec.api_handler = self self end