/// <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]; }
/// <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)); } }
/// <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); }
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; } } }
/// <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; }
/// <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); } }
/// <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; }
/// <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; }