From 48b203c1e002883ee05eb5e568add0d44cd77bbc Mon Sep 17 00:00:00 2001 From: Steven Blowers Date: Wed, 7 Sep 2016 22:54:40 +0100 Subject: Adding complexity to search --- lib/zendex/search.ex | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) (limited to 'lib') 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 -- cgit v1.2.1