예제 #1
0
        private IQMessage IQMessage_Presence(String domain, PresenceShow presenceShow, String presenceStatus)
        {
            String message;
            String tagAvatar;
            String tagVCard;

            if (mPresenceAvatarSHA1 != "")
            {
                tagAvatar = "<x xmlns='jabber:x:avatar'><hash>" + mPresenceAvatarSHA1 + "</hash></x>";
                tagVCard  = "<x xmlns='vcard-temp:x:update'><photo>" + mPresenceAvatarSHA1 + "</photo></x>";
            }
            else
            {
                tagAvatar = "<x xmlns='jabber:x:avatar'/>";
                tagVCard  = "<x xmlns='vcard-temp:x:update'/>";
            }

            if (presenceShow == PresenceShow.offline)
            {
                message = "<presence id=\"" + mTag + "-" + mCounter.ToString() + "\" to=\"" + domain + "\"><show/><status>" + presenceStatus + "</status><priority>1</priority>" + tagAvatar + tagVCard + "</presence>";
            }
            else if (presenceShow == PresenceShow.chat)
            {
                message = "<presence id=\"" + mTag + "-" + mCounter.ToString() + "\" to=\"" + domain + "\"><show>" + presenceShow.ToString() + "</show><status>" + presenceStatus + "</status><priority>1</priority>" + tagAvatar + tagVCard + "</presence>";
            }
            else
            {
                message = "<presence id=\"" + mTag + "-" + mCounter.ToString() + "\" to=\"" + domain + "\"><show>" + presenceShow.ToString() + "</show><status>" + presenceStatus + "</status><priority>0</priority>" + tagAvatar + tagVCard + "</presence>";
            }
            return(new IQMessage(domain, message));
        }
예제 #2
0
        /// <summary>
        /// Lets you change the XMPP Presence
        /// </summary>
        /// <param name="status">Your status</param>
        /// <param name="pres">The presence</param>
        /// <param name="show">The show</param>
        /// <returns>The output presence</returns>
        public string PresenceAsString(string status, PresenceType pres, PresenceShow show)
        {
            var encodedXml = System.Security.SecurityElement.Escape(status);

            return($"<presence type=\"{ConvertPresenceType.ConvertPresenceTypeToString(pres)}\">" +
                   "<priority>0</priority>" +
                   $"<show>{ConvertPresenceShow.ConvertPresenceShowToString(show)}</show>" +
                   $"<status>{encodedXml}</status>" +
                   "</presence>");
        }
예제 #3
0
        /// <summary>
        /// Lets you change the XMPP Presence
        /// </summary>
        /// <param name="status">Your status</param>
        /// <param name="pres">The presence</param>
        /// <param name="show">The show</param>
        public void SetPresence(string status, PresenceType pres, PresenceShow show)
        {
            Presence = new ChatPresence
            {
                FromJid      = ChatClient.MainJid,
                LastOnline   = DateTime.Now.ToString("dd-MM-yyyy"),
                PresenceShow = show,
                PresenceType = pres,
                Status       = status
            };

            var encodedXml = System.Security.SecurityElement.Escape(status);

            ChatClient.TcpClient.SendString(PresenceAsString(status, pres, show));
        }
예제 #4
0
        /// <summary>
        /// Converts <see cref="PresenceShow"/> to a string
        /// </summary>
        /// <param name="show">The presence to convert</param>
        /// <returns>The XMPP string equivalent</returns>
        public static string ConvertPresenceShowToString(PresenceShow show)
        {
            switch (show)
            {
            case PresenceShow.Away:
                return("away");

            case PresenceShow.Chat:
                return("chat");

            case PresenceShow.Mobile:
                return("mobile");

            case PresenceShow.Dnd:
                return("dnd");

            case PresenceShow.Xa:
                return("xa");

            default:
                return("chat");
            }
        }
예제 #5
0
 internal void SendPresence(string domain, PresenceShow presenceShow, String presenceStatus)
 {
     this.OnSendIQMessage(IQMessage_Presence(domain, presenceShow, presenceStatus), new EventArgs());
 }
예제 #6
0
        private IQMessage IQMessage_Presence(String domain, PresenceShow presenceShow, String presenceStatus)
        {
            String message;
            String tagAvatar;
            String tagVCard;
            if (mPresenceAvatarSHA1 != "")
            {
                tagAvatar = "<x xmlns='jabber:x:avatar'><hash>" + mPresenceAvatarSHA1 + "</hash></x>";
                tagVCard = "<x xmlns='vcard-temp:x:update'><photo>" + mPresenceAvatarSHA1 + "</photo></x>";
            }
            else
            {
                tagAvatar = "<x xmlns='jabber:x:avatar'/>";
                tagVCard = "<x xmlns='vcard-temp:x:update'/>";
            }

            if (presenceShow == PresenceShow.offline)
            {
                message = "<presence id=\"" + mTag + "-" + mCounter.ToString() + "\" to=\"" + domain + "\"><show/><status>" + presenceStatus + "</status><priority>1</priority>" + tagAvatar + tagVCard + "</presence>";
            }
            else if (presenceShow == PresenceShow.chat)
            {
                message = "<presence id=\"" + mTag + "-" + mCounter.ToString() + "\" to=\"" + domain + "\"><show>" + presenceShow.ToString() + "</show><status>" + presenceStatus + "</status><priority>1</priority>" + tagAvatar + tagVCard + "</presence>";
            }
            else
            {
                message = "<presence id=\"" + mTag + "-" + mCounter.ToString() + "\" to=\"" + domain + "\"><show>" + presenceShow.ToString() + "</show><status>" + presenceStatus + "</status><priority>0</priority>" + tagAvatar + tagVCard + "</presence>";
            }
            return new IQMessage(domain, message);
        }
예제 #7
0
 internal void SendPresence(string domain, PresenceShow presenceShow, String presenceStatus)
 {
     this.OnSendIQMessage(IQMessage_Presence(domain, presenceShow, presenceStatus), new EventArgs());
 }