Exemplo n.º 1
0
        private static void OnRawMessage(object o, Events.RawMessageEventArgs args)
        {
            var message = args.Message;

            if (message.Replace("\0", "").Replace("\n", "").Replace("\r", "").Trim().Length <= 0)
            {
                return;
            }

            // Console.WriteLine(message.Trim());
        }
Exemplo n.º 2
0
        public void ParseRawMessage(object o, Events.RawMessageEventArgs args)
        {
            var message = args.Message;

            if (message[0] != ':')
            {
                var splitMessage = message.Split(new [] { ':' }, 2);
                // ReSharper disable once InvertIf
                if (splitMessage[0].Contains("PING"))
                {
                    args.Connection.Send("PONG :" + splitMessage[1]);
                    args.Connection.pinged = true;
                }

                if (splitMessage[0].StartsWith("AUTHENTICATE"))
                {
                    if (splitMessage[0] == "AUTHENTICATE +")
                    {
                        _authInProgress = true;
                    }
                }
            }
            else
            {
                var param = new List <string>();
                message = message.Remove(0, 1);
                var meta = message.Split(new [] { ':' }, 2)[0];

                var splitMeta = meta.Split(new [] { ' ' }, 4);

                param.AddRange(meta.Split(' '));
                param.Add(message.Split(new [] { ':' }, 2)[1]);

                var actor     = splitMeta[0];
                var action    = splitMeta[1];
                var target    = splitMeta[2];
                var remainder = splitMeta.Length > 3 ? splitMeta[3] : "";

                if (Regex.IsMatch(action, @"^\d+$"))
                {
                    // is a numeric

                    ParseNumeric(message, remainder, action, actor, target);
                }
                else
                {
                    // Not a numeric

                    ParseNonNumeric(message, remainder, action, actor, target);
                }
            }
        }