Beispiel #1
0
 private void MessageManager_OnMessageInternal(UserJid toJid, UserJid fromJid, string msg)
 {
     if (toJid == RoomJid)
     {
         OnMessage?.Invoke(toJid, fromJid, msg);
     }
 }
Beispiel #2
0
        /// <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);
         }));
     }
 }
Beispiel #5
0
        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));
        }
Beispiel #6
0
        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);
        }
Beispiel #8
0
 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;
     }
 }
Beispiel #9
0
 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
        }
Beispiel #11
0
 internal ChatRoom(ChatClient chatClient, UserJid roomJid)
 {
     ChatClient = chatClient;
     RoomJid    = roomJid;
     ChatClient.MessageManager.OnMessageInternal += MessageManager_OnMessageInternal;
 }
Beispiel #12
0
        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);
        }