diff options
Diffstat (limited to '')
-rw-r--r-- | lib/plugins/untappd.ex | 55 |
1 files changed, 36 insertions, 19 deletions
diff --git a/lib/plugins/untappd.ex b/lib/plugins/untappd.ex index e409172..5a4c070 100644 --- a/lib/plugins/untappd.ex +++ b/lib/plugins/untappd.ex @@ -1,5 +1,4 @@ defmodule Nola.Plugins.Untappd do - def irc_doc() do """ # [Untappd](https://untappd.com) @@ -18,49 +17,67 @@ defmodule Nola.Plugins.Untappd do end def init(_) do - {:ok, _} = Registry.register(Nola.PubSub, "trigger:beer", [plugin: __MODULE__]) + {:ok, _} = Registry.register(Nola.PubSub, "trigger:beer", plugin: __MODULE__) {:ok, %{}} end - def handle_info({:irc, :trigger, _, m = %Nola.Message{trigger: %{type: :bang, args: args}}}, state) do + def handle_info( + {:irc, :trigger, _, m = %Nola.Message{trigger: %{type: :bang, args: args}}}, + state + ) do case Untappd.search_beer(Enum.join(args, " "), limit: 1) do {:ok, %{"response" => %{"beers" => %{"count" => count, "items" => [result | _]}}}} -> %{"beer" => beer, "brewery" => brewery} = result - description = Map.get(beer, "beer_description") - |> String.replace("\n", " ") - |> String.replace("\r", " ") - |> String.trim() - beer_s = "#{Map.get(brewery, "brewery_name")}: #{Map.get(beer, "beer_name")} - #{Map.get(beer, "beer_abv")}°" + + description = + Map.get(beer, "beer_description") + |> String.replace("\n", " ") + |> String.replace("\r", " ") + |> String.trim() + + beer_s = + "#{Map.get(brewery, "brewery_name")}: #{Map.get(beer, "beer_name")} - #{Map.get(beer, "beer_abv")}°" + city = get_in(brewery, ["location", "brewery_city"]) - location = [Map.get(brewery, "brewery_type"), city, Map.get(brewery, "country_name")] - |> Enum.filter(fn(x) -> x end) - |> Enum.join(", ") + + location = + [Map.get(brewery, "brewery_type"), city, Map.get(brewery, "country_name")] + |> Enum.filter(fn x -> x end) + |> Enum.join(", ") + extra = "#{Map.get(beer, "beer_style")} - IBU: #{Map.get(beer, "beer_ibu")} - #{location}" m.replyfun.([beer_s, extra, description]) + err -> m.replyfun.("Error") end + {:noreply, state} end - - def handle_info({:irc, :trigger, _, m = %Nola.Message{trigger: %{type: :query, args: args}}}, state) do + def handle_info( + {:irc, :trigger, _, m = %Nola.Message{trigger: %{type: :query, args: args}}}, + state + ) do case Untappd.search_beer(Enum.join(args, " ")) do {:ok, %{"response" => %{"beers" => %{"count" => count, "items" => results}}}} -> - beers = for %{"beer" => beer, "brewery" => brewery} <- results do - "#{Map.get(brewery, "brewery_name")}: #{Map.get(beer, "beer_name")} - #{Map.get(beer, "beer_abv")}°" - end - |> Enum.intersperse(", ") - |> Enum.join("") + beers = + for %{"beer" => beer, "brewery" => brewery} <- results do + "#{Map.get(brewery, "brewery_name")}: #{Map.get(beer, "beer_name")} - #{Map.get(beer, "beer_abv")}°" + end + |> Enum.intersperse(", ") + |> Enum.join("") + m.replyfun.("#{count}. #{beers}") + err -> m.replyfun.("Error") end + {:noreply, state} end def handle_info(info, state) do {:noreply, state} end - end |