class Simphi::Request

Public Instance Methods

normalize_hash_params() click to toggle source
# File lib/simphi/request.rb, line 5
def normalize_hash_params
  params.each do |key, value|
    normalize_to_proper_params(value) if with_hash? value

    if with_hash? key
      param = delete_param(key)
      update_param(key.gsub(/-simphi/, ''), normalized_hash(param))
    end


  end if with_hash? params
end

Private Instance Methods

normalize_to_proper_params(hash) click to toggle source
# File lib/simphi/request.rb, line 37
def normalize_to_proper_params(hash)
  if hash.is_a? Hash

    list = hash.map do |k, v|
      normalize_to_proper_params(v) if with_hash? v

      if with_hash? k
        {
          key: k,
          obj: { k.gsub(/-simphi/, '') => normalized_hash(v) }
        }
      end

    end.compact

    list.each do |v|
      hash.delete(v[:key])
      hash.merge!(v[:obj])
    end

  end
end
normalized_hash(params) click to toggle source
# File lib/simphi/request.rb, line 25
def normalized_hash(params)
  hashes = params.map do |_, v|
    if v.length <= 1 || !v.has_key?('key') || !v.has_key?('value')
      raise ArgumentError, 'Every hash element should include key and value'
    end

    { v['key'] => v['value'] } if v['key'].present? && v['value'].present?
  end.compact

  hashes.reduce Hash.new, :merge
end
with_hash?(param) click to toggle source
# File lib/simphi/request.rb, line 20
def with_hash?(param)
  return param =~ /-simphi/ if param.is_a? String
  return param.to_s =~ /-simphi/ if param.is_a? Hash
end