package com.esri.geoevent.solutions.transport.irc.jerklib.parsers; import com.esri.geoevent.solutions.transport.irc.jerklib.Channel; import com.esri.geoevent.solutions.transport.irc.jerklib.EventToken; import com.esri.geoevent.solutions.transport.irc.jerklib.Session; import com.esri.geoevent.solutions.transport.irc.jerklib.events.IRCEvent; import com.esri.geoevent.solutions.transport.irc.jerklib.events.MessageEvent; import com.esri.geoevent.solutions.transport.irc.jerklib.events.IRCEvent.Type; import com.esri.geoevent.solutions.transport.irc.jerklib.events.dcc.DccEventFactory; import com.esri.geoevent.solutions.transport.irc.jerklib.events.impl.CtcpEventImpl; import com.esri.geoevent.solutions.transport.irc.jerklib.events.impl.MessageEventImpl; public class PrivMsgParser implements CommandParser { /* * :gh00p!~ghoti@nix-58E3BFC5.cpe.net.cable.rogers.com PRIVMSG #tvtorrents :gotcha * :NeWtoz!jimmy@nix-2F996C9F.dhcp.aldl.mi.charter.com PRIVMSG #tvtorrents :No problem * :cute_bettong!n=elphias@about/apple/IIe/B0FH PRIVMSG #ubuntu :Elphias (elphias) */ public MessageEvent createEvent(EventToken token, IRCEvent event) { Session session = event.getSession(); Type type = session.isChannelToken(token.arg(0))?Type.CHANNEL_MESSAGE:Type.PRIVATE_MESSAGE; Channel chan = type == Type.CHANNEL_MESSAGE? session.getChannel(token.arg(0)):null; MessageEvent me = new MessageEventImpl ( chan, token.hostName(), token.arg(1), token.nick(), token.data(), session, type, token.userName() ); String msg = me.getMessage(); if (msg.startsWith("\u0001")) { String ctcpString = msg.substring(1, msg.length() - 1); if (ctcpString.startsWith("DCC ")) { me = DccEventFactory.dcc(me, ctcpString); } else { return new CtcpEventImpl ( ctcpString, me.getHostName(), me.getMessage(), me.getNick(), me.getUserName(), me.getRawEventData(), me.getChannel(), me.getSession() ); } } return me; } }