diff options
Diffstat (limited to 'lib/plugins/wolfram_alpha.ex')
-rw-r--r-- | lib/plugins/wolfram_alpha.ex | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/lib/plugins/wolfram_alpha.ex b/lib/plugins/wolfram_alpha.ex index 120af16..f9d5a5e 100644 --- a/lib/plugins/wolfram_alpha.ex +++ b/lib/plugins/wolfram_alpha.ex @@ -15,33 +15,44 @@ defmodule Nola.Plugins.WolframAlpha do end def init(_) do - {:ok, _} = Registry.register(Nola.PubSub, "trigger:wa", [plugin: __MODULE__]) + {:ok, _} = Registry.register(Nola.PubSub, "trigger:wa", plugin: __MODULE__) {:ok, nil} end - def handle_info({:irc, :trigger, _, m = %Nola.Message{trigger: %Nola.Trigger{type: :bang, args: query}}}, state) do + def handle_info( + {:irc, :trigger, _, m = %Nola.Message{trigger: %Nola.Trigger{type: :bang, args: query}}}, + state + ) do query = Enum.join(query, " ") + params = %{ "appid" => Keyword.get(Application.get_env(:nola, :wolframalpha, []), :app_id, "NO_APP_ID"), "units" => "metric", "i" => query } + url = "https://www.wolframalpha.com/input/?i=" <> URI.encode(query) - case HTTPoison.get("http://api.wolframalpha.com/v1/result", [], [params: params]) do + + case HTTPoison.get("http://api.wolframalpha.com/v1/result", [], params: params) do {:ok, %HTTPoison.Response{status_code: 200, body: body}} -> m.replyfun.(["#{query} -> #{body}", url]) + {:ok, %HTTPoison.Response{status_code: code, body: body}} -> - error = case {code, body} do - {501, b} -> "input invalide: #{body}" - {code, error} -> "erreur #{code}: #{body || ""}" - end + error = + case {code, body} do + {501, b} -> "input invalide: #{body}" + {code, error} -> "erreur #{code}: #{body || ""}" + end + m.replyfun.("wa: #{error}") + {:error, %HTTPoison.Error{reason: reason}} -> m.replyfun.("wa: erreur http: #{to_string(reason)}") + _ -> m.replyfun.("wa: erreur http") end + {:noreply, state} end - end |