Current section

Files

Jump to
ex_jira lib jirex utils query_params.ex
Raw

lib/jirex/utils/query_params.ex

defmodule ExJira.QueryParams do
@moduledoc """
Helper module to convert parameters passed as a keyword list into a querystring.
"""
@doc """
Converts a keyword list and a list of atoms into a querystring containing only
entries that exist in both the keyword list and the list of atoms.
## Examples
iex> ExJira.QueryParams.convert([asdf: 123, hjkl: 456], [:asdf, :hjkl])
"asdf=123&hjkl=456"
iex> ExJira.QueryParams.convert([asdf: 123, hjkl: 456], [:asdf])
"asdf=123"
iex> ExJira.QueryParams.convert([asdf: 123, hjkl: 456], [:hjkl])
"hjkl=456"
iex> ExJira.QueryParams.convert([asdf: 123, hjkl: 456], [:qwerty])
""
iex> ExJira.QueryParams.convert([asdf: 123, hjkl: 456], [])
""
"""
@spec convert([{atom, String.t}], [atom]) :: String.t
def convert(_params, []), do: ""
def convert(params, [h | t]) do
amp = case t do
[] -> ""
_ -> "&"
end
cond do
Keyword.has_key?(params, h) -> "#{to_string(h)}=#{params[h]}#{amp}#{convert(params, t)}"
true -> convert(params, t)
end
end
end