]> git.netwichtig.de Git - user/henk/code/ruby/rbot.git/blobdiff - lib/rbot/core/journal_irclog.rb
httputil: remove obsolete version_1_2 declaration
[user/henk/code/ruby/rbot.git] / lib / rbot / core / journal_irclog.rb
index 37baab459076895dd917eb53371d50fc41643d05..0617d991da682af76b0697ce6fa9034f4a316cd6 100644 (file)
@@ -17,7 +17,7 @@ class JournalIrcLogModule < CoreBotModule
     :default => [],
     :desc => 'exclude journal irc logging for those channel/users')
 
-  def irclog(payload)
+  def publish(payload)
     if payload[:target]
       target = payload[:target]
       whitelist = @bot.config['journal.irclog.whitelist']
@@ -32,97 +32,37 @@ class JournalIrcLogModule < CoreBotModule
     @bot.journal.publish('irclog', payload)
   end
 
-  # messages sent by the bot
-  def sent(m)
-    case m
-    when NoticeMessage
-      irclog type: 'notice', source: m.source, target: m.target, message: m.message, server: m.server
-    when PrivMessage
-      if m.ctcp
-        irclog type: 'ctcp', source: m.source, target: m.target, ctcp: m.ctcp, message: m.message, server: m.server
-      else
-        irclog type: 'privmsg', source: m.source, target: m.target, message: m.message, server: m.server
-      end
-    when QuitMessage
-      m.was_on.each { |ch|
-        irclog type: 'quit', source: m.source, target: ch, message: m.message, server: m.server
-      }
-    end
-  end
-
-  # messages received from other clients
-  def listen(m)
-    case m
-    when PrivMessage
-      method = 'log_message'
-    else
-      method = 'log_' + m.class.name.downcase.match(/^irc::(\w+)message$/).captures.first
-    end
-    if self.respond_to?(method)
-      self.__send__(method, m)
-    else
-      warning 'unhandled journal irc logging for ' + method
-    end
-  end
-
   def log_message(m)
-    if m.ctcp
-      irclog type: 'ctcp', source: m.source, target: m.target, ctcp: m.ctcp, message: m.message, server: m.server
+    unless m.kind_of? BasicUserMessage
+      warning 'journal irc logger can\'t log %s message' % [m.class.to_s]
     else
-      irclog type: 'privmsg', source: m.source, target: m.target, message: m.message, server: m.server
+      payload = {
+        type: m.class.name.downcase.match(/(\w+)message/).captures.first,
+        addressed: m.address?,
+        replied: m.replied?,
+        identified: m.identified?,
+
+        source: m.source.to_s,
+        source_user: m.botuser.to_s,
+        source_address: m.sourceaddress,
+        target: m.target.to_s,
+        server: m.server.to_s,
+
+        message: m.logmessage,
+      }
+      publish(payload)
     end
   end
 
-  def log_notice(m)
-    irclog type: 'notice', source: m.source, target: m.target, message: m.message, server: m.server
-  end
-
-  def motd(m)
-    irclog type: 'motd', source: m.server, target: m.target, message: m.message, server: m.server
-  end
-
-  def log_nick(m)
-    (m.is_on & @bot.myself.channels).each { |ch|
-      irclog type: 'nick', old: m.oldnick, new: m.newnick, target: ch, server: m.server
-    }
-  end
-
-  def log_quit(m)
-    (m.was_on & @bot.myself.channels).each { |ch|
-      irclog type: 'quit', source: m.source, target: ch, message: m.message, server: m.server
-    }
-  end
-
-  def modechange(m)
-    irclog type: 'mode', source: m.source, target: m.target, mode: m.message, server: m.server
-  end
-
-  def log_join(m)
-    irclog type: 'join', source: m.source, target: m.channel, server: m.server
-  end
-
-  def log_part(m)
-    irclog type: 'part', source: m.source, target: m.channel, message: m.message, server: m.server
-  end
-
-  def log_kick(m)
-    irclog type: 'kick', source: m.source, target: m.channel, kicked: m.target, message: m.message, server: m.server
-  end
-
-  def log_invite(m)
-    irclog type: 'invite', source: m.source, target: m.target, message: m.message, server: m.server
+  # messages sent
+  def sent(m)
+    log_message(m)
   end
 
-  def log_topic(m)
-    case m.info_or_set
-    when :set
-      irclog type: 'topic', source: m.source, target: m.channel, message: m.topic, server: m.server
-    when :info
-      topic = m.channel.topic
-      irclog type: 'topic_info', source: topic.set_by, target: m.channel, set_on: topic.set_on, message: m.topic, server: m.server
-    end
+  # messages received
+  def listen(m)
+    log_message(m)
   end
-
 end
 
 plugin = JournalIrcLogModule.new