From cb9272646ad56662baae4205e8f6a42cb9ba901b Mon Sep 17 00:00:00 2001 From: Steven Blowers Date: Tue, 13 Sep 2016 16:41:57 +0100 Subject: Search module decodes response. --- lib/http_client/in_memory.ex | 4 ++-- lib/zendex/common_helpers.ex | 8 ++++++++ lib/zendex/search.ex | 13 ++++++++----- lib/zendex/ticket.ex | 9 ++++----- 4 files changed, 22 insertions(+), 12 deletions(-) create mode 100644 lib/zendex/common_helpers.ex 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 -- cgit v1.2.1