summaryrefslogtreecommitdiff
path: root/lib/plugins/untappd.ex
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lib/plugins/untappd.ex55
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