From 2d83df8b32bff7f0028923bb5b64dc0b55f20d03 Mon Sep 17 00:00:00 2001 From: Jordan Bracco Date: Tue, 20 Dec 2022 00:21:54 +0000 Subject: Nola rename: The Big Move, Refs T77 --- lib/lsg_irc/wikipedia_plugin.ex | 90 ----------------------------------------- 1 file changed, 90 deletions(-) delete mode 100644 lib/lsg_irc/wikipedia_plugin.ex (limited to 'lib/lsg_irc/wikipedia_plugin.ex') diff --git a/lib/lsg_irc/wikipedia_plugin.ex b/lib/lsg_irc/wikipedia_plugin.ex deleted file mode 100644 index 3202e13..0000000 --- a/lib/lsg_irc/wikipedia_plugin.ex +++ /dev/null @@ -1,90 +0,0 @@ -defmodule Nola.IRC.WikipediaPlugin do - require Logger - - @moduledoc """ - # wikipédia - - * **!wp ``**: retourne le premier résultat de la `` Wikipedia - * **!wp**: un article Wikipédia au hasard - """ - - 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:wp", [plugin: __MODULE__]) - {:ok, nil} - end - - def handle_info({:irc, :trigger, _, message = %IRC.Message{trigger: %IRC.Trigger{type: :bang, args: []}}}, state) do - irc_random(message) - {:noreply, state} - end - def handle_info({:irc, :trigger, _, message = %IRC.Message{trigger: %IRC.Trigger{type: :bang, args: args}}}, state) do - irc_search(Enum.join(args, " "), message) - {:noreply, state} - end - - def handle_info(info, state) do - {:noreply, state} - end - - defp irc_search("", message), do: irc_random(message) - defp irc_search(query, message) do - params = %{ - "action" => "query", - "list" => "search", - "srsearch" => String.strip(query), - "srlimit" => 1, - } - case query_wikipedia(params) do - {:ok, %{"query" => %{"search" => [item | _]}}} -> - title = item["title"] - url = "https://fr.wikipedia.org/wiki/" <> String.replace(title, " ", "_") - msg = "Wikipédia: #{title} — #{url}" - message.replyfun.(msg) - _ -> - nil - end - end - - defp irc_random(message) do - params = %{ - "action" => "query", - "generator" => "random", - "grnnamespace" => 0, - "prop" => "info" - } - case query_wikipedia(params) do - {:ok, %{"query" => %{"pages" => map = %{}}}} -> - [{_, item}] = Map.to_list(map) - title = item["title"] - url = "https://fr.wikipedia.org/wiki/" <> String.replace(title, " ", "_") - msg = "Wikipédia: #{title} — #{url}" - message.replyfun.(msg) - _ -> - nil - end - end - - defp query_wikipedia(params) do - url = "https://fr.wikipedia.org/w/api.php" - params = params - |> Map.put("format", "json") - |> Map.put("utf8", "") - - case HTTPoison.get(url, [], params: params) do - {:ok, %HTTPoison.Response{status_code: 200, body: body}} -> Jason.decode(body) - {:ok, %HTTPoison.Response{status_code: 400, body: body}} -> - Logger.error "Wikipedia HTTP 400: #{inspect body}" - {:error, "http 400"} - error -> - Logger.error "Wikipedia http error: #{inspect error}" - {:error, "http client error"} - end - end - -end -- cgit v1.2.3