Packages

Find relevant emoji from text

Current section

Files

Jump to
emoj lib emoj.ex
Raw

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([], [follow_redirect: true])
|> 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