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