Exemple #1
0
 private void ReceiveUpstreamMessage(IChannel target, IntermediateMessage msg)
 {
     if (msg.Type == MessageType.ClientNotice)
     {
         SendFromServer("NOTICE", username, msg.Payload);
     }
     else if (msg.Type == MessageType.ClientError)
     {
         SendFromServer("KILL", username, msg.Payload);
         connection.Close();
         state = ConnectionState.CLOSED;
     }
     else if (msg.Type == MessageType.System)
     {
         Send(msg.Sender.IrcFullId, "NOTICE", username, "[SYS] " + msg.Payload);
     }
     else if (msg.Type == MessageType.AwayMessage)
     {
         Send(msg.Sender.IrcFullId, Numeric.RPL_AWAY, username, msg.Sender.IrcNick, msg.Payload);
     }
     else if (msg.Type == MessageType.IM)
     {
         var payload = msg.Payload;
         if (msg.Payload.StartsWith("/me "))
         {
             payload = "\x01" + "ACTION " + payload.Substring(4) + "\x01";
         }
         Send(msg.Sender.IrcFullId, "PRIVMSG", username, payload);
     }
 }
Exemple #2
0
        private void ReceiveChannelMessage(IChannel target, IntermediateMessage msg)
        {
            System.Diagnostics.Debug.WriteLine("Irc.ClientConnection.ReceiveChannelMessage({0}, {{ T:{1} S:{2} M:{3} }})", target.IrcName, msg.Type, msg.Sender.IrcNick, msg.Payload);

            if (msg.Type == MessageType.ClientNotice)
            {
                Send(LOCALNICK, "PRIVMSG", target.IrcName, msg.Payload);
                return;
            }

            var payload  = msg.Payload;
            var isAction = false;
            var isEmote  = false;

            if (msg.Payload.StartsWith("/me "))
            {
                isAction = true;
                isEmote  = true;
                payload  = payload.Substring(4);
            }

            if (msg.Type == MessageType.OwnerSay)
            {
                payload = "[OS] " + payload;
            }
            else if (msg.Type == MessageType.ObjectIM)
            {
                payload = "[IM] " + payload;
            }
            else if (msg.Type == MessageType.RegionSay)
            {
                payload = "[RS] " + payload;
            }
            else if (msg.Type == MessageType.Whisper && !isEmote)
            {
                payload  = "whispers: " + payload;
                isAction = true;
            }
            else if (msg.Type == MessageType.Shout && !isEmote)
            {
                payload  = "shouts: " + payload;
                isAction = true;
            }

            if (isAction)
            {
                payload = "\x01" + "ACTION " + payload + "\x01";
            }

            var outmsg = new Irc.Message(msg.Sender.IrcFullId, "PRIVMSG", target.IrcName, payload);

            Send(outmsg);
        }
Exemple #3
0
 public ConsumerMessageContext(
     IMessageContextConsumer consumer,
     IntermediateMessage result,
     int workerId,
     string groupId)
 {
     this.result   = result;
     this.Consumer = consumer;
     this.Message  = result.Payload;
     this.Headers  = result.Headers;
     this.WorkerId = workerId;
     this.GroupId  = groupId;
 }
Exemple #4
0
        private void OnPrivmsg(Message msg)
        {
            if (msg.Argv.Count < 2)
            {
                SendNeedMoreParams("PRIVMSG");
                return;
            }

            var outmsg = new IntermediateMessage();

            outmsg.Timestamp = DateTime.UtcNow;
            outmsg.Sender    = selfId;

            if (msg.Argv[1].StartsWith("\x01" + "ACTION "))
            {
                outmsg.Payload = "/me " + msg.Argv[1].Substring(8).TrimEnd('\x01');
            }
            else
            {
                outmsg.Payload = msg.Argv[1];
            }

            if (msg.Argv[0].StartsWith("#"))
            {
                outmsg.Type = MessageType.Talk;
                channels[msg.Argv[0]].SendMessage(outmsg);
            }
            else if (msg.Argv[0].StartsWith("+"))
            {
                int chan;
                if (int.TryParse(msg.Argv[0].Substring(1), out chan))
                {
                    upstream.SendNonzeroLocal(chan, msg.Argv[1]);
                }
            }
            else
            {
                outmsg.Type = MessageType.IM;
                upstream.SendMessageTo(mapper.MapUser(msg.Argv[0]), outmsg);
            }
        }
        public void MessageTimestamp_ConsumeResultHasMessageTimestamp_ReturnsMessageTimestampFromResult()
        {
            // Arrange
            var expectedMessageTimestamp = new DateTime(2020, 1, 1, 0, 0, 0);

            var headers = new MessageHeaders();

            var consumerResult = new IntermediateMessage(headers, Encoding.UTF8.GetBytes("xxxxxx"));

            consumerResult.Topic     = "xxxx";
            consumerResult.Partition = 1;
            consumerResult.Timestamp = expectedMessageTimestamp;

            //var target = new MessageContextConsumer(null, "consumer", null, consumerResult, CancellationToken.None);

            //// Act
            //var messageTimestamp = target.MessageTimestamp;

            //// Assert
            //messageTimestamp.Should().Be(expectedMessageTimestamp);
        }
 private void ReceiveUpstreamMessage(IChannel target, IntermediateMessage msg)
 {
     if(msg.Type == MessageType.ClientNotice)
     {
         SendFromServer("NOTICE", username, msg.Payload);
     }
     else if(msg.Type == MessageType.ClientError)
     {
         SendFromServer("KILL", username, msg.Payload);
         connection.Close();
         state = ConnectionState.CLOSED;
     }
     else if(msg.Type == MessageType.System)
     {
         Send(msg.Sender.IrcFullId, "NOTICE", username, "[SYS] " + msg.Payload);
     }
     else if(msg.Type == MessageType.AwayMessage)
     {
         Send(msg.Sender.IrcFullId, Numeric.RPL_AWAY, username, msg.Sender.IrcNick, msg.Payload);
     }
     else if(msg.Type == MessageType.IM)
     {
         var payload = msg.Payload;
         if (msg.Payload.StartsWith("/me "))
         {
             payload = "\x01" + "ACTION " + payload.Substring(4) + "\x01";
         }
         Send(msg.Sender.IrcFullId, "PRIVMSG", username, payload);
     }
 }
        private void ReceiveChannelMessage(IChannel target, IntermediateMessage msg)
        {
            System.Diagnostics.Debug.WriteLine("Irc.ClientConnection.ReceiveChannelMessage({0}, {{ T:{1} S:{2} M:{3} }})", target.IrcName, msg.Type, msg.Sender.IrcNick, msg.Payload);

            if(msg.Type == MessageType.ClientNotice)
            {
                Send(LOCALNICK, "PRIVMSG", target.IrcName, msg.Payload);
                return;
            }

            var payload = msg.Payload;
            var isAction = false;
            var isEmote = false;

            if(msg.Payload.StartsWith("/me "))
            {
                isAction = true;
                isEmote = true;
                payload = payload.Substring(4);
            }

            if(msg.Type == MessageType.OwnerSay)
            {
                payload = "[OS] " + payload;
            }
            else if(msg.Type == MessageType.ObjectIM)
            {
                payload = "[IM] " + payload;
            }
            else if (msg.Type == MessageType.RegionSay)
            {
                payload = "[RS] " + payload;
            }
            else if(msg.Type == MessageType.Whisper && !isEmote)
            {
                payload = "whispers: " + payload;
                isAction = true;
            }
            else if(msg.Type == MessageType.Shout && !isEmote)
            {
                payload = "shouts: " + payload;
                isAction = true;
            }

            if(isAction)
            {
                payload = "\x01" + "ACTION " + payload + "\x01";
            }

            var outmsg = new Irc.Message(msg.Sender.IrcFullId, "PRIVMSG", target.IrcName, payload);
            Send(outmsg);
        }
        private void OnPrivmsg(Message msg)
        {
            if (msg.Argv.Count < 2)
            {
                SendNeedMoreParams("PRIVMSG");
                return;
            }

            var outmsg = new IntermediateMessage();
            outmsg.Timestamp = DateTime.UtcNow;
            outmsg.Sender = selfId;

            if (msg.Argv[1].StartsWith("\x01" + "ACTION "))
            {
                outmsg.Payload = "/me " + msg.Argv[1].Substring(8).TrimEnd('\x01');
            }
            else { outmsg.Payload = msg.Argv[1]; }

            if (msg.Argv[0].StartsWith("#"))
            {
                outmsg.Type = MessageType.Talk;
                channels[msg.Argv[0]].SendMessage(outmsg);
            }
            else if(msg.Argv[0].StartsWith("+"))
            {
                int chan;
                if (int.TryParse(msg.Argv[0].Substring(1), out chan))
                {
                    upstream.SendNonzeroLocal(chan, msg.Argv[1]);
                }
            }
            else
            {
                outmsg.Type = MessageType.IM;
                upstream.SendMessageTo(mapper.MapUser(msg.Argv[0]), outmsg);
            }
        }