예제 #1
0
        private void IsFriendCallback(object Sender, IqResultEventArgs e)
        {
            object[]         P        = (object[])e.State;
            IsFriendCallback Callback = (IsFriendCallback)P[0];
            object           State    = P[1];
            string           JID;
            bool             Result;
            XmlElement       E = e.FirstElement;

            if (e.Ok && E != null && E.LocalName == "isFriendResponse" && E.NamespaceURI == NamespaceProvisioning)
            {
                JID    = XML.Attribute(E, "jid");
                Result = XML.Attribute(E, "result", false);
            }
            else
            {
                Result = false;
                JID    = null;
            }

            IsFriendEventArgs e2 = new IsFriendEventArgs(e, State, JID, Result);

            try
            {
                Callback(this, e2);
            }
            catch (Exception ex)
            {
                Log.Critical(ex);
            }
        }
예제 #2
0
        private void CheckIfFriendCallback(object Sender, IsFriendEventArgs e2)
        {
            PresenceEventArgs e = (PresenceEventArgs)e2.State;

            if (e2.Ok && e2.Friend)
            {
                e.Accept();

                RosterItem Item = this.client.GetRosterItem(e.FromBareJID);
                if (Item == null || Item.State == SubscriptionState.None || Item.State == SubscriptionState.From)
                {
                    this.client.RequestPresenceSubscription(e.FromBareJID);
                }
            }
            else
            {
                e.Decline();
            }
        }