defmodule Ravix.Helpers.UrlBuilder do
@moduledoc """
Helper to facilitate building url query params following the RavenDB API
"""
@doc """
Receives a base url, param name and a (list of) param value and parses it to
a valid RavenDB url
"""
@spec append_param(String.t(), String.t(), any()) :: String.t()
def append_param(base_url, param_name, param_value)
def append_param(base_url, name, values) when is_list(values),
do:
base_url
|> build_list_params(name, values)
def append_param(base_url, _param_name, param_value) when param_value == nil, do: base_url
def append_param(base_url, param_name, param_value),
do: append_param(base_url, param_name, [param_value])
defp build_list_params(base_url, name, values) do
base_url <> Enum.map_join(values, "", &"&#{name}=#{&1}")
end
end