Current section
Files
Jump to
Current section
Files
lib/emoj.ex
defmodule Emoj do
@moduledoc """
Exposes a function to find relevant emoji from text
"""
@url "emoji.getdango.com/api/emoji"
alias Poison.Parser
@doc """
Searches relevant emoji from the given `text`
## Example
Emoj.search("I love chicken")
{:ok, ["π", "π", "π", "π₯", "π€", "π£", "π", "π", "π", "π
"]}
"""
@spec search(String.t) :: {:ok, list(String.t)} | {:error, any}
def search(text) do
encoded = URI.encode(text)
query = "#{@url}?q=#{encoded}"
query
|> HTTPoison.get
|> handle_response
|> handle_body
end
defp handle_response({:ok, %{status_code: 200, body: body}}) do
{:ok, Parser.parse!(body)}
end
defp handle_response({:error, %HTTPoison.Error{id: _id, reason: reason}}) do
{:error, reason}
end
defp handle_body({:ok, body}) do
result =
body
|> Map.get("results")
|> Enum.map(fn(x) -> x["text"] end)
{:ok, result}
end
defp handle_body({:error, reason}), do: {:error, reason}
end