public override void HandleMessage(Streams.XmppStream stream, Message msg, XmppHandlerContext context) { User user = (User) msg.SelectSingleElement(typeof (User)); if (user != null) { HandleUserMessage(msg, user, stream); } else { //Groupchat message MucRoomMember member = Room.GetRealMember(msg.From); if (member != null && ReferenceEquals(member.Stream, stream) && member.Role != Role.none) { if (msg.Type == MessageType.groupchat) { if (msg.Subject!=null) { Room.ChangeSubject(member, msg.Subject); } else { MessageBroadcast(msg, member); } } else { msg.SwitchDirection(); msg.Type = MessageType.error; msg.Error = new Error(ErrorCondition.NotAcceptable); context.Sender.SendTo(stream, msg); } } else { msg.SwitchDirection(); msg.Type = MessageType.error; msg.Error = new Error(ErrorCondition.Forbidden); context.Sender.SendTo(stream, msg); } } }
private string GetUser(Message message) { var nick = message.SelectSingleElement<Nickname>(); return nick != null ? nick.Value : message.From.User; }