Beispiel #1
0
 public override Channel GetChannel()
 {
     if (IrcUtils.IsChannel(AltTarget))
     {
         return(Client.GetChannel(AltTarget));
     }
     return(Client.GetChannel(Target));
 }
Beispiel #2
0
 public NumericLine(Line line, int numeric)
     : base(line)
 {
     if (!IrcUtils.IsChannel(Target))
     {
         var numericParts = line.RawStringParts.Skip(1).TakeWhile(p => !p.StartsWith(":"));
         AltTarget = numericParts.LastOrDefault(IrcUtils.IsChannel);
         if (AltTarget == null)
         {
             AltTarget = numericParts.LastOrDefault();
         }
     }
     Numeric = (NumericCommand)numeric;
 }
Beispiel #3
0
        void ProcessLine(string line)
        {
            if (string.IsNullOrEmpty(line))
            {
                return;
            }

            var l = new Line(this, line);

            OnLineRead(l);

            int numeric;

            if (int.TryParse(l.Command, out numeric))
            {
                var nl = new NumericLine(l, numeric);
                LocalUser.OnNumeric(nl);
                OnNumeric(nl);
                switch (nl.Numeric)
                {
                case NumericCommand.RPL_WELCOME:
                    OnRegister(nl);
                    break;

                case NumericCommand.RPL_ENDOFNAMES:
                    OnSync(nl);
                    break;
                }
            }
            else
            {
                switch (l.Command)
                {
                case "PING":
                    Pong(l.Message);
                    OnPing(l);
                    break;

                case "PRIVMSG":
                    if (IrcUtils.IsChannel(l.Target))
                    {
                        OnPublicMessage(l);
                    }
                    else
                    {
                        OnPrivateMessage(l);
                    }
                    break;

                case "NOTICE":
                    if (IrcUtils.IsChannel(l.Target))
                    {
                        OnPublicNotice(l);
                    }
                    else
                    {
                        OnPrivateNotice(l);
                    }
                    break;

                case "JOIN":
                    var jl = new JoinLine(l);
                    LocalUser.OnJoin(jl);
                    OnJoin(jl);
                    break;

                case "PART":
                    LocalUser.OnPart(l);
                    OnPart(l);
                    break;

                case "NICK":
                    var nsl = new NicknameSetLine(l);
                    LocalUser.OnNicknameSet(nsl);
                    OnNicknameSet(nsl);
                    break;

                case "QUIT":
                    OnQuit(l);
                    LocalUser.OnQuit(l);
                    break;

                case "KICK":
                    var kl = new KickLine(l);
                    LocalUser.OnKick(kl);
                    OnKick(kl);
                    break;

                case "TOPIC":
                    LocalUser.OnTopicSet(l);
                    OnTopicSet(l);
                    break;
                }
            }
        }