Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F59481
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
2 KB
Subscribers
None
View Options
diff --git a/lib/plugins/logger.ex b/lib/plugins/logger.ex
index 3d643d3..9b47cd8 100644
--- a/lib/plugins/logger.ex
+++ b/lib/plugins/logger.ex
@@ -1,71 +1,82 @@
defmodule Nola.Plugins.Logger do
require Logger
@couch_db "bot-logs"
def irc_doc(), do: nil
def start_link() do
GenServer.start_link(__MODULE__, [], name: __MODULE__)
end
def init([]) do
regopts = [plugin: __MODULE__]
{:ok, _} = Registry.register(Nola.PubSub, "triggers", regopts)
{:ok, _} = Registry.register(Nola.PubSub, "messages", regopts)
{:ok, _} = Registry.register(Nola.PubSub, "messages:telegram", regopts)
{:ok, _} = Registry.register(Nola.PubSub, "irc:outputs", regopts)
{:ok, _} = Registry.register(Nola.PubSub, "messages:private", regopts)
{:ok, nil}
end
def handle_info({:irc, :trigger, _, m}, state) do
{:noreply, log(m, state)}
end
def handle_info({:irc, :text, m}, state) do
{:noreply, log(m, state)}
end
+ def handle_info({:irc, :out, m}, state) do
+ {:noreply, log(m, state)}
+ end
+
def handle_info(info, state) do
- Logger.debug("logger_plugin: unhandled info: #{info}")
+ Logger.debug("logger_plugin: unhandled info: #{inspect info}")
{:noreply, state}
end
def log(entry, state) do
case Couch.post(@couch_db, format_to_db(entry)) do
{:ok, id, _rev} ->
Logger.debug("logger_plugin: saved: #{inspect id}")
state
error ->
Logger.error("logger_plugin: save failed: #{inspect error}")
end
rescue
e ->
Logger.error("logger_plugin: rescued processing for #{inspect entry}: #{inspect e}")
Logger.error(Exception.format(:error, e, __STACKTRACE__))
state
catch
e, b ->
Logger.error("logger_plugin: catched processing for #{inspect entry}: #{inspect e}")
Logger.error(Exception.format(e, b, __STACKTRACE__))
state
end
def format_to_db(msg = %Nola.Message{id: id}) do
- msg
- |> Poison.encode!()
- |> Map.drop("id")
+ channel = cond do
+ msg.channel -> msg.channel
+ msg.account -> msg.account.id
+ msg.sender -> msg.sender.nick
+ true -> nil
+ end
+
+ id = [msg.network, channel, id]
+ |> Enum.filter(& &1)
+ |> Enum.join(":")
- %{"_id" => id || FlakeId.get(),
- "type" => "irc.message/v1",
+ %{"_id" => id,
+ "type" => "nola.message:v1",
"object" => msg}
end
def format_to_db(anything) do
%{"_id" => FlakeId.get(),
"type" => "object",
"object" => anything}
end
end
File Metadata
Details
Attached
Mime Type
text/x-diff
Expires
Mon, Apr 28, 1:26 PM (1 d, 9 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
38903
Default Alt Text
(2 KB)
Attached To
rNOLA Nola
Event Timeline
Log In to Comment