Aselia.UserCommands.CapHandler.Handler C# (CSharp) Метод

Handler() публичный Метод

public Handler ( object sender, ReceivedCommandEventArgs e ) : void
sender object
e ReceivedCommandEventArgs
Результат void
        public void Handler(object sender, ReceivedCommandEventArgs e)
        {
            if (e.Arguments.Length < 1)
            {
                e.User.ErrorNeedMoreParams(CMD);
                return;
            }

            if (e.User.Level != Authorizations.Connecting)
            {
                e.User.ErrorAlreadyRegistered(CMD);
            }

            e.User.SetSessionFlag("WaitForCap");

            switch (e.Arguments[0].ToUpper())
            {
            case "LS":
                e.User.SendCommand(CMD, e.Server.Id, e.User.Mask.Nickname, "LS", SUPPORTED_STRING);
                break;

            case "REQ":
                if (e.Arguments.Length < 2)
                {
                    e.User.ErrorNeedMoreParams(CMD);
                    break;
                }
                for (int i = 1; i < e.Arguments.Length; i++)
                {
                    string[] tok = e.Arguments[i].ToLower().Split(' ');
                    for (int n = 0; n < tok.Length; n++)
                    {
                        if (SUPPORTED_ARRAY.Contains(tok[n]))
                        {
                            e.User.SendCommand(CMD, e.Server.Id, e.User.Mask.Nickname, "ACK", ":" + tok[n]);
                            switch (tok[n])
                            {
                            case "multi-prefix":
                                e.User.SetSessionFlag("MultiPrefix");
                                break;

                            case "sasl":
                                e.User.SetSessionFlag("SaslRequested");
                                break;
                            }
                        }
                        else
                        {
                            e.User.SendCommand(CMD, e.Server.Id, e.User.Mask.Nickname, "NAK", ":" + tok[n]);
                        }
                    }
                }
                break;

            case "END":
                if (e.User.Level == Authorizations.Connecting || e.User.ClearSessionFlag("SaslWaitForCapEnd"))
                {
                    e.User.ClearSessionFlag("WaitForCap");
                    if (e.User.HasSessionFlag("PassedUser") && e.User.HasSessionFlag("PassedNick"))
                    {
                        e.User.ClearSessionFlag("PassedUser");
                        e.User.ClearSessionFlag("PassedNick");
                        e.User.OnConnected();
                    }
                }
                else
                {
                    e.User.ErrorAlreadyRegistered(CMD);
                }
                break;
            }
        }
CapHandler