module Acoustid::API::Request::ParamAttributes
Public Instance Methods
param(name, options={})
click to toggle source
# File lib/acoustid/api/request/param_attributes.rb, line 48 def param(name, options={}) param_reader(name, options) param_writer(name, options) end
param_reader(param, options={})
click to toggle source
# File lib/acoustid/api/request/param_attributes.rb, line 7 def param_reader(param, options={}) raise TypeError, 'param must respond to :to_sym' unless param.respond_to?(:to_sym) param = param.to_sym raise TypeError, 'options must respond to :to_hash or :to_h' unless options.respond_to?(:to_hash) || options.respond_to?(:to_h) options = options.to_hash rescue options.to_h name = options[:name].to_s.strip name = name.empty? ? param.to_s : name define_method(param) { (@params ||= {})[name] } end
param_writer(param, options={})
click to toggle source
# File lib/acoustid/api/request/param_attributes.rb, line 20 def param_writer(param, options={}) raise TypeError, 'param must respond to :to_sym' unless param.respond_to?(:to_sym) param = param.to_sym raise TypeError, 'options must respond to :to_hash or :to_h' unless options.respond_to?(:to_hash) || options.respond_to?(:to_h) options = options.to_hash rescue options.to_h name = options[:name].to_s.strip name = name.empty? ? param.to_s : name required_params << param if options[:required] raise TypeError, 'validate options must respond to :call or :to_sym' unless options[:validate].nil? || options[:validate].respond_to?(:call) || options[:validate].respond_to?(:to_sym) validate = options[:validate] validate = method(validate) if validate.respond_to?(:to_sym) raise TypeError, 'serialize options must respond to :call or :to_sym' unless options[:serialize].nil? || options[:serialize].respond_to?(:call) || options[:serialize].respond_to?(:to_sym) serialize = options[:serialize] serialize = method(serialize) if serialize.respond_to?(:to_sym) define_method("#{param}=") do |value| validate.call(value) unless validate.nil? value = serialize.call(value) unless serialize.nil? (@params ||= {})[name] = value end end
required_params()
click to toggle source
# File lib/acoustid/api/request/param_attributes.rb, line 53 def required_params @required_params ||= [] end