public void SendWhisper( PublishingEvent ev ) { if ( ev.Cancel ) return; AuthenticatedClient sender = (AuthenticatedClient)clientRepository.GetByID( ev.Message.clientId ); string message = ev.Message.GetData<string>( "message" ); int spacePos = message.IndexOf( ' ' ); if ( spacePos == -1 ) { ev.Cancel = true; ev.CancellationReason = "Format error"; SendInfoToUser( sender, "Usage: /whisper <nickname> message" ); return; } string nickname = message.Substring( 0, spacePos ); var receiver = ( from AuthenticatedClient user in clientRepository.WhereSubscribedTo( "/chat" ) where String.Equals( user.username, nickname, StringComparison.InvariantCultureIgnoreCase ) select user ).FirstOrDefault(); if ( receiver == null ) { SendInfoToUser( sender, "User " + nickname + " is not connected to the chat" ); return; } string text = message.Substring( spacePos+1 ); SendInfoToUser( sender, "To " + nickname + ": " + text ); SendInfoToUser( receiver, sender.username + " whispers: " + text ); }
public void SendWhisper(PublishingEvent ev) { if (ev.Cancel) return; AuthenticatedClient sender = (AuthenticatedClient) clientRepository.GetByID(ev.Message.clientId); Whisper whisper = Whisper.FromMessage(ev.Message); if (whisper == null) { ev.Cancel = true; ev.CancellationReason = "Format error"; SendInfoToClient(sender, "Usage: /whisper <nickname> message"); return; } AuthenticatedClient receiver = clientRepository.WhereSubscribedTo("/chat") .Cast<AuthenticatedClient>() .FirstOrDefault(user => user.HasUsername(whisper.Username)); if (receiver == null) { SendInfoToClient(sender, "User " + whisper.Username + " is not connected to the chat"); return; } SendInfoToClient(sender, "To " + whisper.Username + ": " + whisper.Message); SendInfoToClient(receiver, sender.Username + " whispers: " + whisper.Message); }
public MessageHandlerResult HandleMessage(Message request) { var e = new PublishingEvent(request); EventHub.Publish(e); return null; }
public void CheckMessage(PublishingEvent ev) { if (!ev.Message.GetData<string>("message").Contains("pish")) return; IClient sender = this.clientRepository.GetByID(ev.Message.clientId); ev.Cancel = true; ev.CancellationReason = "Bad Language"; SendBadLanguageWarningToSender(ev.Message, sender); InformChannelOfBadLanguage(ev.Message, sender); }
public void ProcessEvent(PublishingEvent @event) { var action = @event.Channel.SubstringAfterLast("/"); dynamic data = new DynamicDictionaryWrapper((IDictionary<string, object>)@event.Message.data); var channelPrefix = @event.Channel.SubstringBeforeLast("/"); var page = this.repository.Load(channelPrefix.SubstringAfterLast("/")); if (action == "change") { this.ProcessChange(page, channelPrefix, @event.Message.clientId, data); } else if (action == "resync") { this.ProcessResync(page, channelPrefix, @event.Message.clientId, data); } }
public MessageHandlerResult HandleMessage(Message request) { var e = new PublishingEvent(request); EventHub.Publish(e); Message msg = null; if (e.Cancel) { msg = new Message { id = request.id, clientId = request.clientId, channel = request.channel, successful = false, error = e.CancellationReason }; } return new MessageHandlerResult { Message = msg, CanTreatAsLongPoll = false }; }
private static PublishingEvent PublishPublishingEvent(Message request) { PublishingEvent e = new PublishingEvent(request); EventHub.Publish(e); return e; }