module Github::Filter

def _filter_params_keys(keys, params, options={:recursive => true}) # :nodoc:

:nodoc:
Removes any keys from nested hashes that don't match predefiend keys
def _filter_params_keys(keys, params, options={:recursive => true})  # :nodoc:
  case params
  when Hash
    params.keys.each do |k, v|
      unless (keys.include?(k) or Github::Validations::VALID_API_KEYS.include?(k))
        params.delete(k)
      else
        _filter_params_keys(keys, params[k]) if options[:recursive]
      end
    end
  when Array
    params.map! do |el|
      _filter_params_keys(keys, el) if options[:recursive]
    end
  else
    params
  end
  return params
end

def _normalize_params_keys(params) # :nodoc:

:nodoc:
Turns any keys from nested hashes including nested arrays into strings
def _normalize_params_keys(params)  #  :nodoc:
  case params
  when Hash
    params.keys.each do |k|
      params[k.to_s] = params.delete(k)
      _normalize_params_keys(params[k.to_s])
    end
  when Array
    params.map! do |el|
      _normalize_params_keys(el)
    end
  else
    params.to_s
  end
  return params
end

def filter(keys, params)

def filter(keys, params)
  _filter_params_keys(keys, params)
end

def normalize(params)

def normalize(params)
  _normalize_params_keys params
end

def process_params(*args)

def process_params(*args)
  yield self if block_given?
end