private void MessageManager_OnMessageInternal(UserJid toJid, UserJid fromJid, string msg) { if (toJid == RoomJid) { OnMessage?.Invoke(toJid, fromJid, msg); } }
/// <summary> /// Send a message to a user /// </summary> /// <param name="to">The user's Jid you want to send the message to</param> /// <param name="message">The message to send</param> public void SendMessage(UserJid to, string message) { //Set to high priority Thread.CurrentThread.Priority = ThreadPriority.Highest; var encodedXml = System.Web.HttpUtility.HtmlEncode(message); TcpClient.SendString($"<message from=\'{MainJid.RawJid}\' to=\'{to.RawJid}\' type=\'chat\'><body>{encodedXml}</body></message>"); Thread.CurrentThread.Priority = ThreadPriority.AboveNormal; }
public void OnMessage(UserJid jid, string message) { if (jid.PlayerJid == _roomJid.PlayerJid) { Dispatcher.Invoke(DispatcherPriority.Render, (Action)(() => { AppendText($"{jid.Extra}: ", Brushes.DarkBlue); AppendText(message, Brushes.Black); AppendText(Environment.NewLine, Brushes.Black); })); } }
public void OnMessage(UserJid jid, string message) { if (jid.PlayerJid == _roomJid.PlayerJid && jid.Extra != StaticVars.ActiveClient.LoginDataPacket.AllSummonerData.Summoner.Name) { Dispatcher.Invoke(DispatcherPriority.Render, (Action)(() => { AppendText($"{jid.Extra}: ", Brushes.DarkBlue); AppendText(message, Brushes.Black); AppendText(Environment.NewLine, Brushes.Black); })); } }
public ChatRoom JoinRoom(UserJid roomJid) { if (roomJid.Type != JidType.GroupChatJid) { throw new InvalidJidTypeException("To join a room, the Jid must be a type of GroupChat"); } TcpClient.SendString($"<presence from=\'{MainJid.RawJid}\' to=\'{roomJid.RawJid}\'>" + "<x xmlns=\'http://jabber.org/protocol/muc\'/>" + "</presence>"); Thread.CurrentThread.Priority = ThreadPriority.AboveNormal; return(new ChatRoom(this, roomJid)); }
public ChatRoom JoinRoom(UserJid roomJid, string password) { if (roomJid.Type != JidType.GroupChatJid) { throw new InvalidJidTypeException("To join a room, the Jid must be a type of GroupChat"); } TcpClient.SendString( $"<presence from=\'{MainJid.RawJid}\' to=\'{roomJid.RawJid}\'>" + "<x xmlns=\'http://jabber.org/protocol/muc\'>" + $"<password>{password}</password>" + "</x>" + "</presence>"); return(new ChatRoom(this, roomJid)); }
public bool HandleMessage(XmlElement el) { try { var fromUserString = el.Attributes["from"].Value; var toUserString = el.Attributes["from"].Value; if (!string.IsNullOrWhiteSpace(fromUserString) && !string.IsNullOrWhiteSpace(toUserString)) { var fromJid = new UserJid(fromUserString); var toJid = new UserJid(fromUserString); //el.InnerText is the message if (toJid == ChatClient.MainJid) { if (OnMessage != null) { OnMessage(toJid, fromJid, el.InnerText); return(true); } else { return(false); } } else { if (OnMessage != null) { OnMessageInternal(toJid, fromJid, el.InnerText); return(true); } else { return(false); } } } } catch { return(false); } return(true); }
public void OnRostRecieve(UserJid jid) { if (!Players.Exists(x => x.JidAsString == jid.PlayerJid)) { var chatPlayerItem = new ChatPlayerItem { JidAsString = jid.PlayerJid, IsOnline = false, Group = jid.Group, Username = jid.SumName, }; Players.Add(chatPlayerItem); } else { var upt = Players.First(x => x.JidAsString == jid.PlayerJid); upt.Group = jid.Group; upt.Username = jid.SumName; } }
public ChatBoxControl(UserJid jid) { _jid = jid; _chatPlayerItem = StaticVars.ActiveClient.Players.First(x => x.JidAsString == jid.PlayerJid); InitializeComponent(); foreach (var pastMessages in _chatPlayerItem.Messages) { if (pastMessages.Key == _jid.PlayerJid) { AppendText($"{_chatPlayerItem.Username}: ", Brushes.DarkBlue); AppendText(pastMessages.Value, Brushes.Black); AppendText(Environment.NewLine, Brushes.Black); } else { AppendText("You: ", Brushes.DarkOrchid); AppendText(pastMessages.Value, Brushes.Black); AppendText(Environment.NewLine, Brushes.Black); } } }
public bool HandleIq(XmlNode xmlNode, XmlElement el) { #region HandleSessionIQ switch (xmlNode.Name) { case "bind" when xmlNode.HasChildNodes: //Make sure that this is the correct IQ and stuff if (xmlNode.ChildNodes.Count == 1 && xmlNode.FirstChild.Name == "jid") { ChatClient.MainJid = new UserJid(xmlNode.InnerText) { Type = JidType.FriendChatJid, }; ChatClient.TcpClient.SendString("<iq type=\"set\" id=\"1\"><session xmlns=\"urn:ietf:params:xml:ns:xmpp-session\"/></iq>"); } return(true); case "session": //Make sure that this is the correct thing if (xmlNode.ChildNodes.Count != 2 || xmlNode.LastChild.Name != "summoner_name") { return(true); } ChatClient.MainJid.SumName = xmlNode.LastChild.InnerText; if (ChatClient.PresenceManager.Presence != null) { ChatClient.TcpClient.SendString( ChatClient.PresenceManager.PresenceAsString(ChatClient.PresenceManager.Presence)); } //Request roster and priv_req (I think this is friend requests) ChatClient.TcpClient.SendString( $"<iq type=\"get\" id=\"priv_req_2\" to=\"{ChatClient.MainJid.PlayerJid}\"><query xmlns=\"jabber:iq:privacy\"><list name=\"LOL\"/></query></iq>"); ChatClient.TcpClient.SendString( $"<iq type=\"get\" id=\"rst_req_3\" to=\"{ChatClient.MainJid.PlayerJid}\"><query xmlns=\"jabber:iq:riotgames:roster\"/></iq>"); //Lazy hack to subtract a month from today's date var date = DateTime.Now.Month == 1 ? $"{DateTime.Now.Year - 1}-12-{DateTime.Now.Day}" : $"{DateTime.Now.Year}-{DateTime.Now.Month - 1}-{DateTime.Now.Day}"; //Retrieve any former messages from the history of the archives ChatClient.TcpClient.SendString( $"<iq type=\"get\" id=\"recent_conv_req_4\" to=\"{ChatClient.MainJid.PlayerJid}\"><query xmlns=\"jabber:iq:riotgames:archive:list\">" + $"<since>{date} 00:00:00</since><count>10</count></query></iq>"); return(true); } #endregion HandleSessionIQ #region SessionIQHandler #endregion SessionIQHandler #region RosterIQ if (!el.HasAttribute("id") || el.Attributes["id"].InnerText != "rst_req_3") { return(false); } if (!xmlNode.HasChildNodes) { return(true); } foreach (var itemNode in xmlNode.ChildNodes) { var itemRosterItemNode = (XmlNode)itemNode; try { //Create the JID if (itemRosterItemNode.Attributes != null) { var inJid = new UserJid(itemRosterItemNode.Attributes["jid"].Value) { SumName = itemRosterItemNode.Attributes["name"].Value, Group = itemRosterItemNode.HasChildNodes ? itemRosterItemNode.FirstChild.InnerText : "**Default", Type = JidType.FriendChatJid, }; //If the user has a group print it, otherwise return **Default //Send the jid //OnRosterItemRecieved?.Invoke(inJid); if (OnRosterItemRecieved != null) { OnRosterItemRecieved(inJid); } else { return(false); } } } catch { // Don't know if we find attr } } return(true); #endregion RosterIQ }
internal ChatRoom(ChatClient chatClient, UserJid roomJid) { ChatClient = chatClient; RoomJid = roomJid; ChatClient.MessageManager.OnMessageInternal += MessageManager_OnMessageInternal; }
public void OnMessage(UserJid jid, string message) { var findPlayer = Players.FirstOrDefault(x => x.JidAsString == jid.PlayerJid); findPlayer?.Messages.Add(new KeyValuePair <string, string>(jid.PlayerJid, message)); }
public async void Load(int id) { _id = id; if (_hasLoaded) { var changeData = JsonConvert.SerializeObject(new SetGameType { BotDifficulty = null, GameCustomization = null, GameType = string.Empty, MaxPartySize = 5, QueueId = id }); var change = JsonConvert.SerializeObject(new BodyHelper { body = changeData, method = "PUT", url = $"v1/parties/{StaticVars.ActiveClient.CurrentParty.Payload.CurrentParty.PartyId}/gamemode" }); var changeResult = await StaticVars.ActiveClient.RiotProxyCalls.DoLcdsProxyCallWithResponse("parties.service", "proxy", change); return; } _hasLoaded = true; TeamListView.Items.Clear(); StaticVars.ActiveClient.RiotConnection.MessageReceived += ReadRtmpResp; var gamedata = JsonConvert.SerializeObject(new SetGameType { BotDifficulty = null, GameCustomization = null, GameType = string.Empty, MaxPartySize = 5, QueueId = id }); var sendData = JsonConvert.SerializeObject(new BodyHelper { body = gamedata, method = "PUT", url = $"v1/parties/{StaticVars.ActiveClient.CurrentParty.Payload.CurrentParty.PartyId}/gamemode" }); var party = await StaticVars.ActiveClient.RiotProxyCalls.DoLcdsProxyCallWithResponse("parties.service", "proxy", sendData); var ready = JsonConvert.SerializeObject(new BodyHelper { body = "\"open\"", method = "PUT", url = $"v1/parties/{StaticVars.ActiveClient.CurrentParty.Payload.CurrentParty.PartyId}/members/{StaticVars.ActiveClient.LoginDataPacket.AllSummonerData.Summoner.Puuid:D}/ready" }); await StaticVars.ActiveClient.RiotProxyCalls.DoLcdsProxyCallWithResponse("parties.service", "proxy", ready); var data = JsonConvert.DeserializeObject <PartyPayload>(party.Payload); StaticVars.ActiveClient.CurrentParty = data; _roomJid = new UserJid(data.Payload.CurrentParty.Chat.Jid + "@sec.pvp.net"); StaticVars.ActiveClient.XmppClient.JoinRoom(_roomJid); StaticVars.ActiveClient.XmppClient.OnMessageRecieved += OnMessage; var loader = new Thread(async() => { Thread.Sleep(1000); var sendData2 = JsonConvert.SerializeObject(new BodyHelper { body = "\"open\"", method = "PUT", url = $"v1/parties/{StaticVars.ActiveClient.CurrentParty.Payload.CurrentParty.PartyId}/partytype" }); await StaticVars.ActiveClient.RiotProxyCalls.DoLcdsProxyCallWithResponse("parties.service", "proxy", sendData2); }); loader.Start(); var lobby = new FadeLabel { Content = "return to lobby", Margin = new Thickness(5, 0, 0, 0) }; UserInterfaceCore.MainPage.RightHeader.Children.Add(lobby); lobby.MouseDown += Lobby_MouseDown; TeamListView.Items.Add(new TeamControl { ProfileIcon = { Source = new BitmapImage(new Uri(System.IO.Path.Combine(StaticVars.IcyWindLocation, "IcyWindAssets", "Icons", $"{StaticVars.ActiveClient.LoginDataPacket.AllSummonerData.Summoner.ProfileIconId}.png"))) }, SumId = { Content = StaticVars.ActiveClient.LoginDataPacket.AllSummonerData.Summoner.SumId }, SummonerName = { Content = StaticVars.ActiveClient.LoginDataPacket.AllSummonerData.Summoner.Name } }); StaticVars.ActiveClient.XmppClient.SetPresence(NewPres(), PresenceType.Available, PresenceShow.Chat); }