public void VerifyThatNotifyMessageIsReceivedAndDeviceInformationIsPopulated()
        {
            //arrange
            var fakeSocket = new MockedNotifySocket();
            var fakeSocketFactory = A.Fake<ISocketFactory>();
            var fakeResponsFactory = A.Fake<IResponseFactory>();
            var messageParser = new MessageParser();
            var fakeDeviceInfoCollector = A.Fake<IDeviceInfoCollector>();

            A.CallTo(() => fakeSocketFactory.CreateListeningSocket()).Returns(fakeSocket);
            EndPoint dummyEndPoint = new IPEndPoint(IPAddress.Any, 0);
            DeviceInformation deviceInformation = null;
            A.CallTo(() => fakeDeviceInfoCollector.Collect(A<Message>.Ignored))
                .Returns(new DeviceInformation { Location = "http://1.1.1.1/service.xml" });
            var listener = new DiscoveryListener(fakeSocketFactory, fakeResponsFactory, messageParser, fakeDeviceInfoCollector);
            listener.DeviceDiscovered += (sender, e) =>
            {
                deviceInformation = e;
            };

            //act
            listener.Listen();

            //assert
            Assert.AreEqual("http://1.1.1.1/service.xml", deviceInformation.Location);
        }
Пример #2
0
 public AgentBase()
 {
     Parser = new MessageParser();
     var config = ConfigSection.Instance;
     MessageCount = config == null ? 3 : config.MessageCount;
     DiscoveryAddress = IPAddress.Parse(config == null ? "239.255.255.250" : config.Address);
     Port = config == null ? 1900 : config.Port;
     Ttl = config == null ? 4 : config.Ttl;
 }
Пример #3
0
 /// <summary>
 /// Creates a GeneratedCodeInfo for a message descriptor, with nested types, nested enums, the CLR type, property names and oneof names.
 /// Each array parameter may be null, to indicate a lack of values.
 /// The parameter order is designed to make it feasible to format the generated code readably.
 /// </summary>
 public GeneratedCodeInfo(Type clrType, MessageParser parser, string[] propertyNames, string[] oneofNames, Type[] nestedEnums, GeneratedCodeInfo[] nestedTypes)
 {
     NestedTypes = nestedTypes ?? EmptyCodeInfo;
     NestedEnums = nestedEnums ?? ReflectionUtil.EmptyTypes;
     ClrType = clrType;
     Parser = parser;
     PropertyNames = propertyNames ?? EmptyNames;
     OneofNames = oneofNames ?? EmptyNames;
 }
        /// <summary>
        /// CloseConnectionDuplicateClientNameEventArgs Constructor
        /// </summary>
        /// <param name="parsed">a simple MessageParse</param>
        internal CloseConnectionDuplicateClientNameEventArgs(MessageParser parsed)
        {
#if DEBUG
            FCP2Protocol.ArgsDebug(this, parsed);
#endif

#if DEBUG
            parsed.PrintAccessCount();
#endif
        }
        /// <summary>
        /// EndListPeerNotesEventArgs Constructor
        /// </summary>
        /// <param name="parsed">a simple MessageParse</param>
        internal EndListPeerNotesEventArgs(MessageParser parsed)
        {
#if DEBUG
            FCP2Protocol.ArgsDebug(this, parsed);
#endif

#if DEBUG
            parsed.PrintAccessCount();
#endif
        }
        internal SendingToNetworkEventArgs(MessageParser parsed)
        {
#if DEBUG
            FCP2Protocol.ArgsDebug(this, parsed);
#endif

#if DEBUG
            parsed.PrintAccessCount();
#endif
        }
Пример #7
0
 public void TestMethod1()
 {
     Assembly assembly = Assembly.GetExecutingAssembly();
     string text;
     using (var textStreamReader = new StreamReader(assembly.GetManifestResourceStream("SMTPLibrary.Tests.TestEMail.txt")))
     {
         text = textStreamReader.ReadToEnd();
     }
     MessageParser parser = new MessageParser(text);
 }
        /// <summary>
        /// PersistentPutDirEventArgs Constructor
        /// </summary>
        /// <param name="parsed">a simple MessageParse</param>
        internal PersistentPutDirEventArgs(MessageParser parsed)
        {
#if DEBUG
            FCP2Protocol.ArgsDebug(this, parsed);
#endif

#if DEBUG
            parsed.PrintAccessCount();
#endif
        }
Пример #9
0
        public void MessageParser_Test_SerializeAddress_Fails_InvalidAddressDelimiter()
        {
            MessageParser parser = new MessageParser();
            byte[] bytes = GetTestBytes();

            Assert.AreEqual(60, bytes.Length);

            bytes[1] = (byte)',';

            parser.Parse(bytes);
        }
Пример #10
0
        public void MessageParser_Test_SerializeTypeTags_Fails_NullTypeTag()
        {
            MessageParser parser = new MessageParser();
            byte[] bytes = GetTestBytes();

            Assert.AreEqual(60, bytes.Length);

            bytes[9] = byte.MinValue;

            parser.Parse(bytes);
        }
Пример #11
0
        public void MessageParser_Test_SerializeAddress_Fails_InvalidAddressPadding()
        {
            MessageParser parser = new MessageParser();
            byte[] bytes = GetTestBytes();

            Assert.AreEqual(60, bytes.Length);

            bytes[1] = byte.MinValue;

            parser.Parse(bytes);
        }
Пример #12
0
        public void VerifySearchMessageIsCorrectlyParsed()
        {
            //arrange
            MessageParser parser = new MessageParser();
            string rawString =
                "M-SEARCH HTTP/1.1\r\n" +
                "LOCATION: http://1.1.1.1/\r\n" +
                "\r\n";

            //act
            var message = parser.Parse(rawString);

            //assert
            Assert.AreEqual("M-SEARCH HTTP/1.1",message.MessageLine);
            Assert.AreEqual("http://1.1.1.1/", message.Headers["LOCATION"]);
        }
Пример #13
0
        public void TestBadStringForNullResult()
        {
            var logMock = new Mock<ILog>();

            logMock.Setup(s => s.DebugFormat(It.IsAny<string>(), It.IsAny<object>())).Verifiable();

            var parser = new MessageParser{
                Logger = logMock.Object
            };
            Message expectedResult = null;

            var result = parser.Process("some string");

            result.ShouldBeEquivalentTo(result);

            logMock.Verify();
        }
Пример #14
0
        public void TestParse()
        {
            var mp = new MessageParser();
            var result = mp.Parse(Message1, IPAddress.Loopback);
            Assert.AreEqual(Facility.LocalUse7, result.Facility);
            Assert.AreEqual(Severity.Debug, result.Severity);
            Assert.AreEqual(new DateTimeOffset(2015,12,10,22,14,15,new TimeSpan(0,0,0,0)), result.DateTimeOffset);
            Assert.AreEqual("Hello World!", result.Message);

            result = mp.Parse(Message2, IPAddress.Loopback);
            Assert.AreEqual(SyslogMessage.DefaultFacility, result.Facility);
            Assert.AreEqual(SyslogMessage.DefaultSeverity, result.Severity);
            Assert.AreEqual(new DateTimeOffset(2015, 12, 10, 5, 14, 15, new TimeSpan(0, 1, 0, 0)), result.DateTimeOffset);
            Assert.AreEqual("Hello World!", result.Message);

            result = mp.Parse(Message3, IPAddress.Loopback);
            Assert.AreEqual(SyslogMessage.DefaultFacility, result.Facility);
            Assert.AreEqual(SyslogMessage.DefaultSeverity, result.Severity);
            Assert.AreEqual(new DateTimeOffset(2015, 12, 10, 5, 14, 15, new TimeSpan(0, 1, 0, 0)), result.DateTimeOffset);
            Assert.AreEqual("Hello World!", result.Message);

            result = mp.Parse(Message4, IPAddress.Loopback);
            Assert.AreEqual(Facility.LocalUse4, result.Facility);
            Assert.AreEqual(Severity.Notice, result.Severity);
            Assert.AreEqual("Hello World!", result.Message);

            result = mp.Parse(Message5, IPAddress.Loopback);
            Assert.AreEqual(SyslogMessage.DefaultFacility, result.Facility);
            Assert.AreEqual(SyslogMessage.DefaultSeverity, result.Severity);
            Assert.AreEqual("Hello World!", result.Message);

            result = mp.Parse(string.Empty, IPAddress.Loopback);
            Assert.AreEqual(SyslogMessage.DefaultFacility, result.Facility);
            Assert.AreEqual(SyslogMessage.DefaultSeverity, result.Severity);
            Assert.AreEqual(string.Empty, result.Message);

            result = mp.Parse(null, IPAddress.Loopback);
            Assert.AreEqual(SyslogMessage.DefaultFacility, result.Facility);
            Assert.AreEqual(SyslogMessage.DefaultSeverity, result.Severity);
            Assert.AreEqual(string.Empty, result.Message);

            result = mp.Parse(null, null);
            Assert.AreEqual(SyslogMessage.DefaultFacility, result.Facility);
            Assert.AreEqual(SyslogMessage.DefaultSeverity, result.Severity);
            Assert.AreEqual(string.Empty, result.Message);
        }
Пример #15
0
        public void Vista50PFullMessage()
        {
            var message = "@[01000001000---------],0e5,[f707000600e5800c0c020000],\"ARMED ***AWAY***** ALL SECURE **\"";
            var logMock = new Mock<ILog>();

            logMock.Setup(s => s.DebugFormat(It.IsAny<string>(), It.IsAny<object>())).Verifiable();

            var parser = new MessageParser{
                Logger = logMock.Object
            };
            Message expectedResult = null;

            var result = parser.Process(message);

            result.ShouldBeEquivalentTo(expectedResult);

            logMock.Verify();
        }
        public void Parse_WhenDataChunkContainsNoSeperator_ThenNothingIsObserved()
        {
            //Arrange
            const string dataToSend = "Hello World!";
            const string seperator = "<seperator>";
            const string dataToSendIncludingSeperator = dataToSend + seperator;
            var dataToSendInBytes = Encoding.UTF8.GetBytes(dataToSendIncludingSeperator);
            var dataToSendInBytesCount = Encoding.UTF8.GetByteCount(dataToSendIncludingSeperator);
            var messageParser = new MessageParser(seperator);
            var subject = new Subject<string>();
            var dataRead = string.Empty;
            subject.Subscribe(testDataMessage => dataRead = testDataMessage);

            //Act
            messageParser.Parse(new DataChunk(dataToSendInBytes, dataToSendInBytesCount), subject);

            //Assert
            Assert.AreEqual(dataToSend, dataRead);
        }
Пример #17
0
        /// <summary>
        /// ConfigDataEventArgs Constructor
        /// </summary>
        /// <param name="parsed">a simple MessageParse</param>
        internal ConfigDataEventArgs(MessageParser parsed)
        {
#if DEBUG
            FCP2Protocol.ArgsDebug(this, parsed);
#endif

            config = parsed;

            /* Too much to parse by hand -
             * we would duplicate most of the nodes 
             * datastructures for configuration 
             * Therfore we expose the MessageParser directly...
             * 
             * C# 4.0 - dynamic type could be the solution!
             * * * * * */

#if DEBUG
            parsed.PrintAccessCount();
#endif

        }
Пример #18
0
        public void MessageParser_Test_Parse()
        {
            MessageParser parser = new MessageParser();
            MessageBuilder builder = new MessageBuilder();
            builder.SetAddress("/test");
            builder.PushAtom(new Atom(TypeTag.OscInt32));
            builder.PushAtom(new byte[] { (byte)5 });
            builder.PushAtom(5.0f);
            builder.PushAtom(6.0);
            builder.PushAtom(7);
            builder.PushAtom(8L);
            builder.PushAtom("Test");


            // Test
            osc.net.Message message = builder.ToMessage();
            
            byte[] bytes = parser.Parse(message);
            osc.net.Message parsedMessage = parser.Parse(bytes);
            byte[] reparsedBytes = parser.Parse(parsedMessage);

            Assert.AreEqual(message, parsedMessage);
            CollectionAssert.AreEqual(bytes, reparsedBytes);
        }
        public void VerifyThatSearchRequestWillBeAnsweredCorrectly()
        {
            //arrange
            var fakeSocket = new MockedSearchSocket();
            var fakeSocketFactory = A.Fake<ISocketFactory>();
            var fakeResponsFactory = A.Fake<IResponseFactory>();
            var messageParser = new MessageParser();
            var fakeDeviceInfoCollector = A.Fake<IDeviceInfoCollector>();
            A.CallTo(() => fakeSocketFactory.CreateListeningSocket()).Returns(fakeSocket);
            EndPoint dummyEndPoint = new IPEndPoint(IPAddress.Any, 0);
            Message receivedMessage = null;
            var listener = new DiscoveryListener(fakeSocketFactory, fakeResponsFactory, messageParser, fakeDeviceInfoCollector);
            listener.SearchMessageReceived += (sender, e) =>
            {
                receivedMessage = e;
            };

            //act
            listener.Listen();
            listener.Stop();
            //assert
            Assert.AreEqual("M-SEARCH * HTTP/1.1", receivedMessage.MessageLine);
            Assert.AreEqual("http://1.1.1.1/service.xml", receivedMessage.Headers["LOCATION"]);
        }
Пример #20
0
 public void GetPortReturnsPortNumberAsUnsignedInteger()
 {
     parser = new MessageParser(new byte[] { 0x99, 0xAA });
     Assert.AreEqual(39338, (int)parser.GetPort());
 }
 public MessageBasedSensorModel(MessageParser parser)
 {
     messageParser = parser;
 }
Пример #22
0
 public ProtobufDeserializer()
 {
     parser = new MessageParser <T>(() => new T());
 }
Пример #23
0
 public void GetIPAddressRemovesBytesAsTheyAreReturned()
 {
     parser = new MessageParser(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 });
     _      = parser.GetIPAddress();
     Assert.AreEqual(IPAddress.Parse("5.6.7.8"), parser.GetIPAddress());
 }
Пример #24
0
 public void GetShortRemovesBytesAsTheyAreReturned()
 {
     parser = new MessageParser(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 });
     _      = parser.GetShort();
     Assert.AreEqual(1027, parser.GetShort());
 }
Пример #25
0
        public static void UpdateSmifStatus(string NodeName, string Data)
        {
            try
            {
                Form     form = Application.OpenForms["FormManual"];
                ComboBox portName;
                if (form == null)
                {
                    return;
                }

                portName = form.Controls.Find("Cb_SMIFSelect", true).FirstOrDefault() as ComboBox;
                if (portName == null)
                {
                    return;
                }

                if (portName.InvokeRequired)
                {
                    UpdateData ph = new UpdateData(UpdateSmifStatus);
                    portName.BeginInvoke(ph, NodeName, Data);
                }
                else
                {
                    if (portName.Text.Equals(NodeName))
                    {
                        Node          port   = NodeManagement.Get(NodeName);
                        MessageParser parser = new MessageParser(port.Brand);
                        port.Status = parser.ParseMessage(Transaction.Command.LoadPortType.ReadStatus, Data);

                        foreach (KeyValuePair <string, string> item in port.Status)
                        {
                            Label StsLb = form.Controls.Find(item.Key + "_lb", true).FirstOrDefault() as Label;
                            if (StsLb != null)
                            {
                                StsLb.Text = item.Value;
                                if (item.Key.Equals("SLOTPOS"))
                                {
                                    ComboBox Slot_cb = form.Controls.Find("Move_To_Slot_cb", true).FirstOrDefault() as ComboBox;

                                    if (Slot_cb != null)
                                    {
                                        if (item.Value.Equals("255"))
                                        {
                                            Slot_cb.SelectedIndex = 0;
                                        }
                                        else
                                        {
                                            Slot_cb.SelectedIndex = Convert.ToInt32(item.Value);
                                        }
                                    }
                                    //Lab_I_Slot_11
                                    for (int i = 1; i <= 25; i++)
                                    {
                                        StsLb = form.Controls.Find("Lab_I_Slot_" + i.ToString("00"), true).FirstOrDefault() as Label;
                                        if (i == Convert.ToInt32(item.Value))
                                        {
                                            StsLb.BackColor = Color.Yellow;
                                        }
                                        else
                                        {
                                            StsLb.BackColor = Color.Silver;
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            catch
            {
                logger.Error("UpdateSmifStatus: Update fail.");
            }
        }
Пример #26
0
 public void GetStringRemovesBytesIncludingZeroByteAsTheyAreReturned()
 {
     parser = new MessageParser(new byte[] { 72, 105, 0, 66, 121, 101 });
     _      = parser.GetString();
     Assert.AreEqual(66, parser.GetByte());
 }
 public void Parse_WhenDataChunkIsNull_ThrowsException()
 {
     var messageParser = new MessageParser("<Seperator>");
     messageParser.Parse(null, null);
 }
Пример #28
0
 public void GetByteRemovesByteAsItIsReturned()
 {
     parser = new MessageParser(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 });
     _      = parser.GetByte();
     Assert.AreEqual(2, parser.GetByte());
 }
Пример #29
0
 public void GetByteReturnsFirstByteOfBuffer()
 {
     parser = new MessageParser(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 });
     Assert.AreEqual(1, parser.GetByte());
 }
Пример #30
0
        private byte[] GetTestBytes()
        {
            MessageParser parser = new MessageParser();
            MessageBuilder builder = new MessageBuilder();
            builder.SetAddress("/test");
            builder.PushAtom(new Atom(TypeTag.OscInt32));
            builder.PushAtom(new byte[] { (byte)5 });
            builder.PushAtom(5.0f);
            builder.PushAtom(6.0);
            builder.PushAtom(7);
            builder.PushAtom(8L);
            builder.PushAtom("Test");

            return parser.Parse(builder.ToMessage());
        }
Пример #31
0
        private void ProcessNegotiate(NegotiationToken token, string source)
        {
            var parsed = MessageParser.Parse(token.InitialToken.MechToken.Value);

            ExplodeObject(parsed, $"Kerberos Message ({source})");
        }
Пример #32
0
 public void GetPortReturnsFirstTwoBytesOfBufferAsNetworkOrderPortNumber()
 {
     parser = new MessageParser(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 });
     Assert.AreEqual(258, parser.GetPort());
 }
Пример #33
0
 /// <summary>
 /// Creates a GeneratedClrTypeInfo for a message descriptor, with nested types, nested enums, the CLR type, property names and oneof names.
 /// Each array parameter may be null, to indicate a lack of values.
 /// The parameter order is designed to make it feasible to format the generated code readably.
 /// </summary>
 public GeneratedClrTypeInfo(Type clrType, MessageParser parser, string[] propertyNames, string[] oneofNames, Type[] nestedEnums, GeneratedClrTypeInfo[] nestedTypes)
     : this(clrType, parser, propertyNames, oneofNames, nestedEnums, null, nestedTypes)
 {
 }
Пример #34
0
 public void GetBytesRemovesBytseAsTheyAreReturned()
 {
     parser = new MessageParser(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 });
     _      = parser.GetBytes(4);
     CollectionAssert.AreEqual(new byte[] { 5, 6 }, parser.GetBytes(2));
 }
Пример #35
0
        static void TestBytesToMessage() {
            byte[] b = new byte[1000];
            byte[] ival = BitConverter.GetBytes(123);
            byte[] fval = BitConverter.GetBytes(321.123f);

            if (BitConverter.IsLittleEndian) {
                Array.Reverse(ival);
                Array.Reverse(fval);
            }

            int i = 0;
            b[i++] = (byte)'/';
            b[i++] = (byte)'a';
            b[i++] = (byte)'/';
            b[i++] = (byte)'b';
            b[i++] = (byte)'/';         // 4
            b[i++] = (byte)'c';
            b[i++] = (byte)0;
            b[i++] = (byte)0;
            b[i++] = (byte)',';         // 8
            b[i++] = (byte)'i';
            b[i++] = (byte)'f';
            b[i++] = (byte)'s';
            b[i++] = (byte)'b';         // 12
            b[i++] = byte.MinValue;
            b[i++] = byte.MinValue;
            b[i++] = byte.MinValue;
            b[i++] = ival[0];           // 16
            b[i++] = ival[1];
            b[i++] = ival[2];
            b[i++] = ival[3]; 
            b[i++] = fval[0];           // 20
            b[i++] = fval[1];
            b[i++] = fval[2];
            b[i++] = fval[3];
            b[i++] = 0;                 // 24
            b[i++] = 0;
            b[i++] = 0;
            b[i++] = 6;
            b[i++] = (byte)'f';         // 28
            b[i++] = (byte)'o';
            b[i++] = (byte)'O';
            b[i++] = (byte)'b';
            b[i++] = (byte)'a';         // 32
            b[i++] = (byte)'r';
            b[i++] = byte.MinValue;
            b[i++] = byte.MinValue;
            b[i++] = 0;                 // 36
            b[i++] = 0;
            b[i++] = 0;
            b[i++] = 7;
            b[i++] = (byte)'f';         // 40
            b[i++] = (byte)'o';
            b[i++] = (byte)'O';
            b[i++] = (byte)'b';
            b[i++] = (byte)'a';         // 44
            b[i++] = (byte)'r';
            b[i++] = (byte)'R';
            b[i++] = byte.MinValue;

            var parser = new MessageParser();
            var message = parser.Parse(b);
            PrintMessage(message);
        }
 public ProtobuffedMercuryRequest([NotNull] RawMercuryRequest request, MessageParser <T> parser)
 {
     this.Request = request;
     _parser      = parser;
 }
Пример #37
0
        public void LoginTest()
        {
            // send:
            //    - hello
            //    - feature
            //    - auth
            TcpSocketMock socket = new TcpSocketMock();
            MessageFactory messageFactory = new MessageFactory();
            socket.Connect("bin-short.whatsapp.net", 5222);

            List<byte> helloMessage = messageFactory.CreateHelloMessage();
            socket.Send(helloMessage.ToArray());

            ProtocolNode features = messageFactory.CreateFeaturesNode();
            socket.Send(features.ToBytes());

            ProtocolNode authNode = messageFactory.CreateAuthNode();
            socket.Send(authNode.ToBytes());

            // receive
            //    - start (tream)
            //    - features
            //    - challenge

            byte[] startMessage = new byte[7];
            socket.Receive(startMessage, SocketFlags.None);

            MessageParser parser = new MessageParser();
            ProtocolNode startNode = parser.ParseNode(startMessage);
            Console.WriteLine(startNode.ToString());

            byte[] serverFeaturesMessage = new byte[10];
            socket.Receive(serverFeaturesMessage, SocketFlags.None);

            parser = new MessageParser();
            ProtocolNode serverFeaturesNode = parser.ParseNode(serverFeaturesMessage);
            Console.WriteLine(serverFeaturesNode.ToString());

            byte[] challengeMessage = new byte[97];
            socket.Receive(challengeMessage, SocketFlags.None);

            //send
            // - response

            parser = new MessageParser();
            ProtocolNode challengeNode = parser.ParseNode(challengeMessage);
            Console.WriteLine(challengeNode.ToString());

            Dictionary<string, string> challengeParameters = messageFactory.ProcessChallenge(challengeNode);
            string nonce = challengeParameters["nonce"];
            string qop = challengeParameters["qop"];
            string charset = challengeParameters["charset"];
            string algorithm = challengeParameters["algorithm"];

            WhatsAppApi api = new WhatsAppApi();
            ProtocolNode authResponseNode = messageFactory.CreateAuthResponseNode("s.whatsapp.net", "555198765432", api.EncryptPassword("175422846762539"), nonce, qop, charset);
            socket.Send(authResponseNode.ToBytes());

            byte[] serverMessage = new byte[1024];
            socket.Receive(serverMessage, SocketFlags.None);

            parser = new MessageParser();
            ProtocolNode resultNode = parser.ParseNode(serverMessage);
            Console.WriteLine(resultNode.ToString());
            Assert.AreEqual(resultNode.tag, "success");
        }
Пример #38
0
 public void GetShortReturnsFirstTwoBytesOfBufferAs16BitInteger()
 {
     parser = new MessageParser(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 });
     Assert.AreEqual(513, parser.GetShort());
 }
Пример #39
0
        static T Deserialize <T>(byte[] data) where T : IMessage <T>, new()
        {
            var parser = new MessageParser <T>(() => new T());

            return(parser.ParseFrom(new MemoryStream(data)));
        }
Пример #40
0
        public void MessageParser_Test_SerializeTypeTags_Fails_InvalidTypeTag()
        {
            MessageParser parser = new MessageParser();
            byte[] bytes = GetTestBytes();

            Assert.AreEqual(60, bytes.Length);

            bytes[9] = (byte)'x';

            parser.Parse(bytes);
        }
        private MessageParser GetParser(MockedBotServerConfiguration serverConfig = null)
        {
            var parser = new MessageParser(serverConfig ?? new MockedBotServerConfiguration(), serverConfig?.Language ?? "en-us", 0);

            return(parser);
        }
Пример #42
0
        /// <summary>
        /// Parses the failure.
        /// </summary>
        /// <typeparam name="U"></typeparam>
        /// <param name="data">The data.</param>
        /// <returns></returns>
        public static U Parse <U>(byte[] data) where U : IMessage <U>, new()
        {
            MessageParser <U> parser = new MessageParser <U>(() => new U());

            return(parser.ParseFrom(data));
        }
Пример #43
0
        static void Main(string[] args)
        {
            int error;

            steamClient = (SteamClient008)Steamworks.CreateInterface(SteamClient008.InterfaceVersion, out error);
            if (steamClient == null)
            {
                Console.WriteLine("Unable to get SteamClient.");
                return;
            }

            pipe = steamClient.CreateSteamPipe();
            user = steamClient.ConnectToGlobalUser(pipe);


            _handler += new EventHandler(ConsoleEvent);
            SetConsoleCtrlHandler(_handler, true);

            steamFriends = ( SteamFriends001 )steamClient.GetISteamFriends(user, pipe, SteamFriends001.InterfaceVersion);
            steamUser    = (SteamUser012)steamClient.GetISteamUser(user, pipe, SteamUser012.InterfaceVersion);

            FriendsName = steamFriends.GetPersonaName();

            RelayTargets = new List <RelayUser>();

            ircClient = new IrcClient(RelayNick);
            ircClient.AlternateNickname = RelayNick + "`";

            ircClient.Debugger.Debugging = DebugMode.All;

            ConnectionParser connection = ircClient.ConnectionParser;
            MessageParser    message    = ircClient.MessageParser;

            connection.Connected   += new EventHandler <InfoEventArgs>(connection_Connected);
            message.ChannelMessage += new EventHandler <MessageEventArgs>(message_ChannelMessage);

            running = ircClient.Connect(RelayNetwork);

            DateTime lastUpdate = DateTime.Now;

            while (running)
            {
                ircClient.UpdateIn();

                if ((DateTime.Now - lastUpdate) >= RelayDelay && connected)
                {
                    ircClient.UpdateOut();
                    lastUpdate = DateTime.Now;
                }
                else
                {
                    ircClient.UpdateOut();
                }

                if (!connected)
                {
                    continue;
                }

                Callback        callback;
                SteamCallHandle steamCall;

                if (Steamworks.Steam_BGetCallback(pipe, out callback, out steamCall))
                {
                    Console.WriteLine("Callback: " + callback.CallbackNum);

                    if (callback.CallbackNum == FriendChatMsg.Callback)
                    {
                        FriendChatMsg chatMsg = ( FriendChatMsg )callback.CallbackObject;

                        SteamID sender   = new SteamID(chatMsg.Sender);
                        SteamID reciever = new SteamID(chatMsg.Reciever);

                        if (sender.Equals(steamUser.GetSteamID()))
                        {
                            Steamworks.Steam_FreeLastCallback(pipe);
                            continue;
                        }

                        string        msg;
                        FriendMsgType msgType;
                        steamFriends.GetChatMessage(reciever, ( int )chatMsg.ChatID, out msg, 400, out msgType);

                        if (msgType != FriendMsgType.Chat)
                        {
                            Steamworks.Steam_FreeLastCallback(pipe);
                            continue;
                        }

                        string senderStr = steamFriends.GetFriendPersonaName(sender);
                        msg = msg.Replace("\n", " ").Replace("\r", " ").Replace("DCC", "");

                        RelayUser ru = new RelayUser()
                        {
                            SteamID     = sender,
                            LastMessage = DateTime.Now.Subtract(TimeSpan.FromSeconds(1)),
                        };

                        if (!RelayTargets.Contains(ru))
                        {
                            RelayTargets.Add(ru);
                        }

                        RelayUser realUser = RelayTargets.Find(new Predicate <RelayUser>((ruser) => { return(ruser.SteamID.Equals(sender)); }));


                        if (msg.StartsWith("!relayon"))
                        {
                            realUser.RelayingIRC = true;
                            steamFriends.SendMsgToFriend(sender, FriendMsgType.ChatSent, "You are now added to the relay list.");
                        }
                        else if (msg.StartsWith("!relayoff"))
                        {
                            realUser.RelayingIRC = false;
                            steamFriends.SendMsgToFriend(sender, FriendMsgType.ChatSent, "You have been removed from the relay list.");
                        }
                        else
                        {
                            if (!realUser.RelayingIRC)
                            {
                                Steamworks.Steam_FreeLastCallback(pipe);
                                continue;
                            }

                            if ((DateTime.Now - realUser.LastMessage) >= TimeSpan.FromSeconds(1))
                            {
                                realUser.LastMessage = DateTime.Now;
                                ircClient.SendMessage(RelayChannel, senderStr + ": " + msg);
                            }
                            else
                            {
                                steamFriends.SendMsgToFriend(sender, FriendMsgType.ChatSent, "You are sending messages too fast.");
                            }
                        }
                    }

                    Steamworks.Steam_FreeLastCallback(pipe);
                }
            }
        }
Пример #44
0
 public void GetStringReturnsBytesUpToFirstZeroByteAsString()
 {
     parser = new MessageParser(new byte[] { 72, 105, 0, 66, 121, 101 });
     Assert.AreEqual("Hi", parser.GetString());
 }
Пример #45
0
 public string Serialize()
 {
     return(MessageParser.Serialize(ToBase()));
 }
Пример #46
0
 public RequestDecoder(MessageParser messageParser) : base(messageParser)
 {
 }
Пример #47
0
 public void GetIPAddressReturnsFirstFourBytesOfBufferAsNetworkOrderIPAddress()
 {
     parser = new MessageParser(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 });
     Assert.AreEqual(IPAddress.Parse("1.2.3.4"), parser.GetIPAddress());
 }
Пример #48
0
        public void MessageStartWithTest()
        {
            var message = "!test stuff";

            MessageParser.MessageStatsWith(message, "!test").Should().BeTrue();
        }
Пример #49
0
        /// <summary>
        /// 处理消息,先进行<see cref="MessageParser.ParseMessage(string)"/>
        /// </summary>
        /// <param name="messageStr"></param>
        /// <returns></returns>
        public string ProcessMessage(string messageStr)
        {
            IMessage message = MessageParser.ParseMessage(messageStr);

            return(ProcessMessage(message));
        }
Пример #50
0
 public void RemoveTriggerWordTest()
 {
     MessageParser.RemoveTriggerWord("!test hello").Should().Be("hello");
 }
 public MessageBasedSensorModel(string message)
 {
     messageParser = new MessageParser(message);
 }
Пример #52
0
 public static Marshaller <TMessage> GetMarshaller <TMessage>(MessageParser <TMessage> parser) where TMessage : IMessage <TMessage> =>
 Marshallers.Create <TMessage>(r => r.ToByteArray(), data => parser.ParseFrom(data));
Пример #53
0
        static void TestMessageToBytes() {
            var messageBuilder = new MessageBuilder();
            messageBuilder.SetAddress("/a/b/c");
            messageBuilder.PushAtom(123);
            messageBuilder.PushAtom(321.123f);
            messageBuilder.PushAtom("foObar");
            messageBuilder.PushAtom(Encoding.ASCII.GetBytes("foObarR"));

            var message = messageBuilder.ToMessage();
            PrintMessage(message);

            var parser = new MessageParser();
            var bytes = parser.Parse(message);

            // round trip
            var newmessage = parser.Parse(bytes);
            System.Diagnostics.Debug.Assert(message.Equals(newmessage), "Roundtrip messages are not equal.");
            PrintMessage(newmessage);
        }
Пример #54
0
 public static Method <TRequest, TResponse> CreateServiceMethod <TRequest, TResponse>(string methodName, MessageParser <TRequest> requestParser, MessageParser <TResponse> responseParser)
     where TRequest : IMessage <TRequest>
     where TResponse : IMessage <TResponse>
 {
     return(new Method <TRequest, TResponse>(MethodType.Unary, "ServiceName", methodName, GetMarshaller(requestParser), GetMarshaller(responseParser)));
 }
Пример #55
0
 public Form1()
 {
     InitializeComponent();
     stringHandler = new MessageParser();
 }
Пример #56
0
 public void GetStringReturnsRemainingBytesAsStringWhenBufferContainsNoZeroBytes()
 {
     parser = new MessageParser(new byte[] { 72, 101, 108, 108, 111 });
     Assert.AreEqual("Hello", parser.GetString());
 }
 public void Parse_WhenObserverIsNull_ThrowsException()
 {
     var messageParser = new MessageParser("<Seperator>");
     messageParser.Parse(new DataChunk(new byte[1], 1), null);
 }
Пример #58
0
 public void GetStringReturnsEmptyStringWhenBufferIsEmpty()
 {
     parser = new MessageParser(new byte[] { });
     Assert.AreEqual("", parser.GetString());
 }
Пример #59
0
        public int Send(byte[] buffer)
        {
            if (buffer[0] == 'W' && buffer[1] == 'A')
            {
                //received hello, must wait for features
                protocolPhase = 1;
            }
            else
            {
                MessageParser parser = new MessageParser();
                ProtocolNode node = parser.ParseNode(buffer);
                if (node.tag == "stream:features")
                {
                    //received features, must wait for auth
                    protocolPhase = 2;
                }
                else if (node.tag == "auth")
                {
                    protocolPhase = 3;
                    receiveBuffer = new List<byte>();

                    //<stream:stream from="s.whatsapp.net"></stream:stream>
                    Dictionary<string, string> startNodeAttributes = new Dictionary<string, string>();
                    startNodeAttributes["from"] = "s.whatsapp.net";
                    ProtocolNode startNode = new ProtocolNode("stream:stream", startNodeAttributes, null, "");
                    receiveBuffer.AddRange(startNode.ToBytes());

                    // <stream:features>
                    //   <receipt_acks></receipt_acks>
                    //</stream:features>
                    ProtocolNode receiptAcksNode = new ProtocolNode("receipt_acks", null, null, "");
                    List<ProtocolNode> featuresNodeChildren = new List<ProtocolNode>();
                    featuresNodeChildren.Add(receiptAcksNode);
                    ProtocolNode featuresNode = new ProtocolNode("stream:features", null, featuresNodeChildren, "");
                    receiveBuffer.AddRange(featuresNode.ToBytes());

                    //  <challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl">bm9uY2U9IjE0OTcxOTQ2MzkyMSIscW9wPSJhdXRoIixjaGFyc2V0PXV0Zi04LGFsZ29yaXRobT1tZDUtc2Vzcw==</challenge>
                    Dictionary<string, string> attributes = new Dictionary<string, string>();
                    attributes["xmlns"] = "urn:ietf:params:xml:ns:xmpp-sasl";
                    ProtocolNode challenge = new ProtocolNode("challenge", attributes, null, "bm9uY2U9IjE0OTcxOTQ2MzkyMSIscW9wPSJhdXRoIixjaGFyc2V0PXV0Zi04LGFsZ29yaXRobT1tZDUtc2Vzcw==");
                    receiveBuffer.AddRange(challenge.ToBytes());
                }
                else if (node.tag == "response")
                {
                    //received
                    //<response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">dXNlcm5hbWU9IjU1NTE5ODc2NTQzMiIscmVhbG09InMud2hhdHNhcHAubmV0Iixub25jZT0iMTQ5NzE5NDYzOTIxIixjbm9uY2U9IjM2MzgzNTNhMzUzNTM1MzEzOTM4MzczNjM1MzQzMzMyM2EzODMxMzIzODYxMzQzMDM4MzMzNzMxMzE2MTM4NjU2MTYzMzk2MTMzNjM2MzY0MzYzODMwNjM2MzMzNjMzOTMyIixuYz0wMDAwMDAwMSxxb3A9YXV0aCxkaWdlc3QtdXJpPSJ4bXBwL3Mud2hhdHNhcHAubmV0IixyZXNwb25zZT1lM2Q5MjIxOTRlN2M3MTBlYmE3YjEyNjI4Mjc5MTgzMyxjaGFyc2V0PXV0Zi04</response>
                    //must verify and send success
                    MessageFactory factory = new MessageFactory();
                    Dictionary<string,string> encodedAttributes = factory.ProcessChallenge(node);
                    if (encodedAttributes["username"] == "555198765432"
                        && encodedAttributes["realm"] == "s.whatsapp.net"
                        && encodedAttributes["nonce"] == "149719463921"
                        && encodedAttributes["nc"] == "00000001"
                        && encodedAttributes["qop"] == "auth"
                        && encodedAttributes["digest-uri"] == "xmpp/s.whatsapp.net"
                        && encodedAttributes["charset"] == "utf-8")

                   {
                       //&& encodedAttributes["cnonce"] == "aaaaa"
                       //&& encodedAttributes["response"] == "e3d922194e7c710eba7b126282791833"
                        //TODO: validate cnonce e response
                       //send
                       //<success xmlns="urn:ietf:params:xml:ns:xmpp-sasl" status="active" kind="free" creation="1338065926" expiration="1369601926"></success>
                       ProtocolNode success = new ProtocolNode("success", null, null, "");
                       receiveBuffer.AddRange(success.ToBytes());

                   }
                }
            }
            return buffer.Length;
        }
Пример #60
0
 public void GetBytesReturnsFirstNBytesOfBuffer()
 {
     parser = new MessageParser(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8 });
     CollectionAssert.AreEqual(new byte[] { 1, 2, 3, 4 }, parser.GetBytes(4));
 }