def params_to_url(test_params)
      # Extract the desired method from the params
      method = test_params.delete(:method) || :client
      method = method.to_sym

      # Add in underscores
      test_params = test_params.each_with_object({}) do |(k, v), obj|
        obj[k.to_sym] = v
      end

      @param_matches[method].each do |param_matcher|
        # TODO: Maybe a deep dup?
        result, new_params = check_params_match(test_params.dup, param_matcher[0])

        return param_matcher[1].call(new_params) if result
      end

      [nil, nil]
    end
def params_to_url(test_params)
      # Extract the desired method from the params
      method = test_params.delete(:method) || :client
      method = method.to_sym

      # Add in underscores
      test_params = test_params.each_with_object({}) do |(k, v), obj|
        obj[k.to_sym] = v
      end

      @param_matches[method].each do |param_matcher|
        # TODO: Maybe a deep dup?
        result, new_params = check_params_match(test_params.dup, param_matcher[0])

        return param_matcher[1].call(new_params) if result
      end

      [nil, nil]
    end
Takes in params and generates a path and the remaining params
 that should be shown in the url.  The extra "unused" params
 will be tacked onto the end of the url ?param1=value1, etc...

 returns the url and new params, or nil, nil if no match is found.