Esempio n. 1
0
 /// <summary>
 ///   Initializes a new instance of the <see cref = "T:XmppEventMessage" /> class.
 /// </summary>
 /// <param name = "message">The event.</param>
 internal XmppEventMessage(Message message)
 {
     identifier = message.ID;
     @from = message.From;
     to = message.To;
     eventMessage = (PubSubEvent) message.Items[0];
 }
Esempio n. 2
0
 /// <summary>
 ///   Process an XMPP Message
 /// </summary>
 /// <param name = "message"></param>
 private void ProcessMessage(Message message)
 {
     if (message.Items.Count > 0 &&
         message.Items[0] is PubSubEvent)
     {
         onEventMessage.OnNext(new XmppEventMessage(message));
     }
     else
     {
         onMessageReceived.OnNext(new XmppMessage(message));
     }
 }
Esempio n. 3
0
 /// <summary>
 ///   Initializes a new instance of the <see cref = "T:XmppMessage" /> class.
 /// </summary>
 /// <param name = "message">The message.</param>
 internal XmppMessage(Message message)
 {
     Initialize(message);
 }
Esempio n. 4
0
        private void Initialize(Message message)
        {
            identifier = message.ID;
            @from = message.From;
            to = message.To;
            language = message.Lang;
            type = message.Type;
            thread = String.Empty;
            chatStateNotification = XmppChatStateNotification.None;

            foreach (object item in message.Items)
            {
                if (item is MessageBody)
                {
                    body = ((MessageBody) item).Value;
                }
                else if (item is MessageSubject)
                {
                    subject = ((MessageSubject) item).Value;
                }
                else if (item is NotificationActive)
                {
                    chatStateNotification = XmppChatStateNotification.Active;
                }
                else if (item is NotificationComposing)
                {
                    chatStateNotification = XmppChatStateNotification.Composing;
                }
                else if (item is NotificationGone)
                {
                    chatStateNotification = XmppChatStateNotification.Gone;
                }
                else if (item is NotificationInactive)
                {
                    chatStateNotification = XmppChatStateNotification.Inactive;
                }
                else if (item is NotificationPaused)
                {
                    chatStateNotification = XmppChatStateNotification.Paused;
                }
            }
        }
Esempio n. 5
0
        /// <summary>
        ///   Sends the message.
        /// </summary>
        /// <param name = "message">The message.</param>
        public string SendMessage(string message)
        {
            if (session == null)
            {
                throw new InvalidOperationException("Chat session is closed.");
            }

            var body = new MessageBody
                           {
                               Value = message
                           };

            var chatMessage = new Message
                                  {
                                      ID = XmppIdentifierGenerator.Generate(),
                                      Type = MessageType.Chat,
                                      From = session.UserId.ToString(),
                                      To = Contact.ContactId.ToString(),
                                  };

            if (Contact.SupportsChatStateNotifications)
            {
                chatMessage.Items.Add(CreateChatStateNotification(XmppChatStateNotification.Active));
            }

            chatMessage.Items.Add(body);

            session.Send(chatMessage);

            return chatMessage.ID;
        }
Esempio n. 6
0
        /// <summary>
        ///   Sends a chat state notification
        /// </summary>
        /// <param name = "notificationType"></param>
        public void SendChatStateNotification(XmppChatStateNotification notificationType)
        {
            // Generate the notification only if the target entity supports it
            if (Contact.SupportsChatStateNotifications)
            {
                var message = new Message
                                  {
                                      ID = XmppIdentifierGenerator.Generate(),
                                      Type = MessageType.Chat,
                                      From = session.UserId.ToString(),
                                      To = Contact.ContactId.ToString(),
                                  };

                message.Items.Add(CreateChatStateNotification(notificationType));

                session.Send(message);
            }
        }
Esempio n. 7
0
        /// <summary>
        ///   Sends the message.
        /// </summary>
        /// <param name = "message">The message.</param>
        public XmppChatRoom SendMessage(string message)
        {
            var chatMessage = new Message
                                  {
                                      ID = XmppIdentifierGenerator.Generate(),
                                      Type = MessageType.GroupChat,
                                      From = Session.UserId.ToString(),
                                      To = Identifier
                                  };

            chatMessage.Items.Add
                (
                    new MessageBody
                        {
                            Value = message
                        }
                );

            Session.Send(chatMessage);

            return this;
        }
Esempio n. 8
0
        /// <summary>
        ///   Invites the given contact to the chat room
        /// </summary>
        /// <param name = "contact"></param>
        public XmppChatRoom Invite(XmppContact contact)
        {
            var user = new MucUser();
            var message = new Message
                              {
                                  From = Session.UserId,
                                  To = Identifier.BareIdentifier,
                              };
            var invite = new MucUserInvite
                             {
                                 To = contact.ContactId.BareIdentifier,
                                 Reason = "Ninja invite"
                             };

            user.Items.Add(invite);
            message.Items.Add(user);

            Session.Send(message);

            return this;
        }