diff options
author | Steven Blowers <shdblowers@gmail.com> | 2016-09-07 22:54:40 +0100 |
---|---|---|
committer | Steven Blowers <shdblowers@gmail.com> | 2016-09-07 22:54:40 +0100 |
commit | 48b203c1e002883ee05eb5e568add0d44cd77bbc (patch) | |
tree | e79d9782d0620311c31fe50672724ffd75f2c8f8 /lib | |
parent | 850327a440483f4cba8c42a17fa494299ec2f964 (diff) | |
download | zendex-48b203c1e002883ee05eb5e568add0d44cd77bbc.tar.gz zendex-48b203c1e002883ee05eb5e568add0d44cd77bbc.tar.xz |
Adding complexity to search
Diffstat (limited to 'lib')
-rw-r--r-- | lib/zendex/search.ex | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/lib/zendex/search.ex b/lib/zendex/search.ex index dd4515d..1fe52ec 100644 --- a/lib/zendex/search.ex +++ b/lib/zendex/search.ex @@ -1,22 +1,32 @@ defmodule Zendex.Search do - @url "/search.json" + @url "/search.json?query=" @http_client Application.get_env(:zendex, :http_client) - def query(query) do - query - |> extract - |> Enum.join(" ") - |> URI.encode + def query(connection, query, sort_by \\ "", sort_order \\ "asc") do + search_string = create_search_string(query) + sort_string = create_sort_string(sort_by, sort_order) + + full_uri = connection.base_url <> @url <> search_string <> sort_string + + @http_client.get!(full_uri, + [{"Authorization", "Basic #{connection.authentication}"}]) end - defp extract(query) do - Enum.map(query, &convert(&1)) + defp create_search_string(query) do + query + |> Enum.map(&convert(&1)) + |> Enum.join(" ") + |> URI.encode_www_form end defp convert({:type, type}), do: "type:#{type}" defp convert({:requester, requester}), do: "requester:#{requester}" + defp create_sort_string("", _sort_order), do: "" + defp create_sort_string(sort_by, sort_order) do + "&sort_by=#{sort_by}&sort_order=#{sort_order}" + end end |