diff options
Diffstat (limited to 'lib/nola_plugins/wolfram_alpha_plugin.ex')
-rw-r--r-- | lib/nola_plugins/wolfram_alpha_plugin.ex | 47 |
1 files changed, 0 insertions, 47 deletions
diff --git a/lib/nola_plugins/wolfram_alpha_plugin.ex b/lib/nola_plugins/wolfram_alpha_plugin.ex deleted file mode 100644 index 6ee06f0..0000000 --- a/lib/nola_plugins/wolfram_alpha_plugin.ex +++ /dev/null @@ -1,47 +0,0 @@ -defmodule Nola.IRC.WolframAlphaPlugin do - use GenServer - require Logger - - @moduledoc """ - # wolfram alpha - - * **`!wa <requête>`** lance `<requête>` sur WolframAlpha - """ - - def irc_doc, do: @moduledoc - - def start_link() do - GenServer.start_link(__MODULE__, [], name: __MODULE__) - end - - def init(_) do - {:ok, _} = Registry.register(IRC.PubSub, "trigger:wa", [plugin: __MODULE__]) - {:ok, nil} - end - - def handle_info({:irc, :trigger, _, m = %IRC.Message{trigger: %IRC.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 - {: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 - 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 |