aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorSteven Blowers <sblowers@findmypast.com>2016-09-13 16:41:57 +0100
committerSteven Blowers <sblowers@findmypast.com>2016-09-13 16:41:57 +0100
commitcb9272646ad56662baae4205e8f6a42cb9ba901b (patch)
tree63fd71112a67c1855645fbecc4acf38dccbbc553 /lib
parent951a6942656965b0a1e6be0761cda8deddd9fd38 (diff)
downloadzendex-cb9272646ad56662baae4205e8f6a42cb9ba901b.tar.gz
zendex-cb9272646ad56662baae4205e8f6a42cb9ba901b.tar.xz
Search module decodes response.
Diffstat (limited to 'lib')
-rw-r--r--lib/http_client/in_memory.ex4
-rw-r--r--lib/zendex/common_helpers.ex8
-rw-r--r--lib/zendex/search.ex13
-rw-r--r--lib/zendex/ticket.ex9
4 files changed, 22 insertions, 12 deletions
diff --git a/lib/http_client/in_memory.ex b/lib/http_client/in_memory.ex
index 924f743..de88a05 100644
--- a/lib/http_client/in_memory.ex
+++ b/lib/http_client/in_memory.ex
@@ -11,12 +11,12 @@ defmodule Zendex.HttpClient.InMemory do
def get!("http://test.zendesk.com/api/v2/search.json?query=requester%3AJimbob+type%3Aticket",
[{"Authorization", _authentication}]) do
- ["Jimbob Ticket 1", "Jimbob Ticket 2"]
+ fake_response(["Jimbob Ticket 1", "Jimbob Ticket 2"])
end
def get!("http://test.zendesk.com/api/v2/search.json?query=requester%3AReginald+type%3Aticket&sort_by=created_at&sort_order=desc",
[{"Authorization", _authentication}]) do
- ["Reginald Ticket 1", "Reginald Ticket 2"]
+ fake_response(["Reginald Ticket 1", "Reginald Ticket 2"])
end
def post!("http://test.zendesk.com/api/v2/tickets.json", "{\"ticket\":{}}", [{"Authorization", _authentication}, {"Content-Type", "application/json"}]) do
diff --git a/lib/zendex/common_helpers.ex b/lib/zendex/common_helpers.ex
new file mode 100644
index 0000000..34aac30
--- /dev/null
+++ b/lib/zendex/common_helpers.ex
@@ -0,0 +1,8 @@
+defmodule Zendex.CommonHelpers do
+ @moduledoc """
+ Contains common helper functions used throughout Zendex.
+ """
+
+ def decode_response(%{body: body}), do: Poison.decode!(body)
+
+end
diff --git a/lib/zendex/search.ex b/lib/zendex/search.ex
index 79c42eb..13843d4 100644
--- a/lib/zendex/search.ex
+++ b/lib/zendex/search.ex
@@ -1,21 +1,24 @@
defmodule Zendex.Search do
- @moduledoc """
+ @moduledoc """
Allows use of the Zendex search API functionality.
"""
+ alias Zendex.CommonHelpers
+
@url "/api/v2/search.json?query="
@http_client Application.get_env(:zendex, :http_client)
- @spec query(Zendex.Connection.t, map, String.t, String.t)
- :: HTTPoison.Response.t
+ @spec query(Zendex.Connection.t, map, String.t, String.t) :: map
def query(connection, query, sort_by \\ "", sort_order \\ "desc") 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}"}])
+ full_uri
+ |> @http_client.get!([{"Authorization",
+ "Basic #{connection.authentication}"}])
+ |> CommonHelpers.decode_response
end
defp create_search_string(query) do
diff --git a/lib/zendex/ticket.ex b/lib/zendex/ticket.ex
index c1f3edc..38c3fa0 100644
--- a/lib/zendex/ticket.ex
+++ b/lib/zendex/ticket.ex
@@ -4,8 +4,9 @@ defmodule Zendex.Ticket do
and listing tickets.
"""
- @url "/api/v2/tickets.json"
+ alias Zendex.CommonHelpers
+ @url "/api/v2/tickets.json"
@http_client Application.get_env(:zendex, :http_client)
@spec list(Zendex.Connection.t) :: map
@@ -13,7 +14,7 @@ defmodule Zendex.Ticket do
connection.base_url
|> Kernel.<>(@url)
|> @http_client.get!(headers(connection.authentication))
- |> decode_response
+ |> CommonHelpers.decode_response
end
@spec create(Zendex.Connection.t, map) :: map
@@ -23,11 +24,9 @@ defmodule Zendex.Ticket do
headers(connection.authentication) ++
[{"Content-Type", "application/json"}])
- decode_response(response)
+ CommonHelpers.decode_response(response)
end
- defp decode_response(%{body: body}), do: Poison.decode!(body)
-
defp headers(authentication) do
[{"Authorization", "Basic #{authentication}"}]
end