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; }
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); }
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); }