aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSteven Blowers <shdblowers@gmail.com>2016-09-07 22:54:40 +0100
committerSteven Blowers <shdblowers@gmail.com>2016-09-07 22:54:40 +0100
commit48b203c1e002883ee05eb5e568add0d44cd77bbc (patch)
treee79d9782d0620311c31fe50672724ffd75f2c8f8 /lib
parent850327a440483f4cba8c42a17fa494299ec2f964 (diff)
downloadzendex-48b203c1e002883ee05eb5e568add0d44cd77bbc.tar.gz
zendex-48b203c1e002883ee05eb5e568add0d44cd77bbc.tar.xz
Adding complexity to search
Diffstat (limited to 'lib')
-rw-r--r--lib/zendex/search.ex26
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