Ejemplo n.º 1
0
        public MemeChatMessage(ChatUser fromUser, string text, List <ChatUser> toUsers)
        {
            MemeChatMessage message = FromString(text);

            ImageUrl   = message.ImageUrl;
            FirstLine  = message.FirstLine;
            SecondLine = message.SecondLine;
            ThirdLine  = message.ThirdLine;
            FourthLine = message.FourthLine;
        }
Ejemplo n.º 2
0
        public static MemeChatMessage FromString(string text)
        {
            MemeChatMessage message = new MemeChatMessage();

            string[] values = text.Split(new string[] { Environment.NewLine }, StringSplitOptions.None);

            if (values.Length == 1)
            {
                message.ImageUrl = values[0];
            }
            else if (values.Length == 2)
            {
                message.FirstLine = values[1];
                message.ImageUrl  = values[0];
            }
            else if (values.Length == 3)
            {
                message.FirstLine  = values[1];
                message.FourthLine = values[2];
                message.ImageUrl   = values[0];
            }
            else if (values.Length == 4)
            {
                message.FirstLine  = values[1];
                message.ThirdLine  = values[2];
                message.FourthLine = values[3];
                message.ImageUrl   = values[0];
            }
            else if (values.Length == 5)
            {
                message.FirstLine  = values[1];
                message.SecondLine = values[2];
                message.ThirdLine  = values[3];
                message.FourthLine = values[4];
                message.ImageUrl   = values[0];
            }

            return(message);
        }
Ejemplo n.º 3
0
        private static ChatUserMessage Parse(ChatUser fromUser, string text, IList <ChatUser> allUsers, bool ignoreTagAndUsers)
        {
            List <string>   tags    = new List <string>();
            List <ChatUser> toUsers = new List <ChatUser>();

            if (!ignoreTagAndUsers)
            {
                // If the message is tagged, send to all users, don't even parse usernames
                if (TryGetTags(text, out tags, out text))
                {
                }
                else
                {
                    toUsers = GetWhisperUsers(text, allUsers, out text);
                }
            }

            ChatUserMessage message = null;

            if (MatchesCommand(text, Commands.IMAGEURL))
            {
                string imageUrl = RemoveCommand(text, Commands.IMAGEURL);
                message = new ImageUrlChatMessage {
                    ImageUrl = imageUrl
                };
            }
            else if (MatchesCommand(text, Commands.WEB))
            {
                string url = RemoveCommand(text, Commands.WEB);
                message = new WebUrlChatMessage {
                    Url = url
                };
            }
            else if (MatchesCommand(text, Commands.STATUS_UPDATE))
            {
                string status = RemoveCommand(text, Commands.STATUS_UPDATE);
                message = new UserStatusMessage {
                    Text = status
                };
            }
            else if (MatchesCommand(text, Commands.ASCII))
            {
                string asciiText = RemoveCommand(text, Commands.ASCII);
                message = new ASCIIChatMessage {
                    Text = asciiText
                };
            }
            else if (MatchesCommand(text, Commands.XAML))
            {
                string xaml = RemoveCommand(text, Commands.XAML);
                message = new XamlChatMessage {
                    Xaml = xaml
                };
            }
            else if (MatchesCommand(text, Commands.MEME))
            {
                string memeText = RemoveCommand(text, Commands.MEME);
                message = MemeChatMessage.FromString(memeText);
            }
            else if (MatchesCommand(text, Commands.POLL))
            {
                string pollText = RemoveCommand(text, Commands.POLL);
                message = PollMessage.FromString(pollText);
            }
            else if (MatchesCommand(text, Commands.LINK) || HyperlinkUtility.IsHyperlink(text))
            {
                string url = RemoveCommand(text, Commands.LINK);
                message = new HyperlinkChatMessage(url);
            }
            else if (MatchesCommand(text, Commands.VIDEOURL))
            {
                string url = RemoveCommand(text, Commands.VIDEOURL);

                if (url.Contains("https://"))
                {
                    url = url.Replace("https://", "http://");
                }
                message = new VideoUrlChatMessage {
                    VideoUrl = url
                };
            }
            else if (MatchesCommand(text, Commands.WHITEBOARD) || text == "/" + Commands.WHITEBOARD)
            {
                if (text == "/" + Commands.WHITEBOARD)
                {
                    text += " ";
                }
                string url = RemoveCommand(text, Commands.WHITEBOARD);
                message = new WhiteboardChatMessage {
                    ImageUrl = url
                };
            }
            else
            {
                message = new NormalChatUserMessage {
                    Text = text
                };
            }

            message.ToUsers  = toUsers;
            message.FromUser = fromUser;
            message.Tags     = tags;

            return(message);
        }