예제 #1
0
        public List <Event> Parse(string eventsToAdd)
        {
            List <Event> parsedEvents = new List <Event>();

            //substring getter
            SubstringBetweenFlagsGetter substringGetter = new SubstringBetweenFlagsGetter();
            //deserializer
            JsonEventParser jsonEventParser = new JsonEventParser();

            while (true)
            {
                string eventFromLogKey = substringGetter.Get(eventsToAdd, "key:", ",");
                string jsonFromLog     = substringGetter.Get(eventsToAdd, "json:", "\n");

                if ((String.IsNullOrEmpty(eventFromLogKey)) || (String.IsNullOrEmpty(jsonFromLog)))
                {
                    break;
                }

                int startingJsonIndex = eventsToAdd.IndexOf("json:");
                int endingJsonIndex   = startingJsonIndex + jsonFromLog.Length;

                eventsToAdd = eventsToAdd.Remove(0, endingJsonIndex);

                bool isTooBigEvent = jsonFromLog.Length > MaxAllowedJsonLength;

                if (!isTooBigEvent)
                {
                    Event parsedEvent = jsonEventParser.Parse(eventFromLogKey, jsonFromLog);
                    parsedEvents.Add(parsedEvent);
                }
            }
            return(parsedEvents);
        }
예제 #2
0
        public void Parse_JsonWithListProperty_ReturnEmptyEvent()
        {
            //Arrange
            JsonEventParser jsonEventParser = new JsonEventParser();

            //Act
            Event Result = jsonEventParser.Parse("SomeEventName", "{courses: [\"html\", \"css\"]\n}");

            //Assert
            Assert.Equal("SomeEventName", Result.EventKey);
            Assert.Equal("Property name: courses\n  Property type: List\n  Sample value: \n  [\"html\",\"css\"]", Result.JsonPropertiesMetaValue[0].ToString());
        }
예제 #3
0
        public void Parse_EmptyString_ReturnEmptyEvent()
        {
            //Arrange
            JsonEventParser jsonEventParser = new JsonEventParser();

            //Act
            Event Result = jsonEventParser.Parse("SomeEventName", "");

            //Assert
            Assert.Equal("", Result.EventKey);
            Assert.Equal(new List <JsonProperty>(), Result.JsonPropertiesMetaValue);
        }
예제 #4
0
        public void Parse_JsonWithObjectProperty_ReturnEventWithObjectProperty()
        {
            //Arrange
            JsonEventParser jsonEventParser = new JsonEventParser();

            //Act
            Event Result = jsonEventParser.Parse("SomeEventName", "{Name: \"Jhon\",\nage: \"32\"\n,\nson: {Name: \"Jhon\",\nage: \"12\"\n}\n}");

            //Assert
            Assert.Equal("SomeEventName", Result.EventKey);
            Assert.Equal("Property name: Name\n  Property type: String\n  Sample value: \n  Jhon", Result.JsonPropertiesMetaValue[0].ToString());
            Assert.Equal("Property name: age\n  Property type: Number\n  Sample value: \n  32", Result.JsonPropertiesMetaValue[1].ToString());
            Assert.Equal("Property name: son\n  Property type: Object\n  Sample value: \n  {\"Name\":\"Jhon\",\"age\":\"12\"}", Result.JsonPropertiesMetaValue[2].ToString());
        }
예제 #5
0
        private void ParseEventOnHandle(object model, BasicDeliverEventArgs ea)
        {
            byte[] body       = ea.Body.ToArray();
            string message    = Encoding.UTF8.GetString(body);
            string routingKey = ea.RoutingKey;

            using IServiceScope scope = _serviceProvider.CreateScope();
            JsonEventParser  jsonEventParser = new JsonEventParser();
            IEventRepository eventRepository = scope.ServiceProvider.GetService <IEventRepository>();

            if ((message == null) || (message == ""))
            {
                return;
            }


            Event parsedEvent = jsonEventParser.Parse(routingKey, message);

            string eventFromLogKey = parsedEvent.EventKey;
            Event  existingEvent   = eventRepository.GetEvent(eventFromLogKey);
            bool   doesEventExists = existingEvent != null;

            if (parsedEvent.JsonPropertiesMetaValue == null)
            {
                return;
            }

            if (doesEventExists)
            {
                eventRepository.Update(parsedEvent);
            }
            else
            {
                eventRepository.Add(parsedEvent);
            }
        }
예제 #6
0
        private void Initialize(CliArguments arguments)
        {
            IEventParser definitions = new JsonEventParser(arguments.Definitions);

            reader = new SimpleLogReader(arguments.Logfile)
            {
                EventDefinition = definitions
            };

            switch (arguments.Format)
            {
            case "stdout":
                generator = new ConsolePrinter();
                break;

            case "html":
                this.InitializeHtmlReportGenerator(arguments);
                break;

            default:
                generator = new ConsolePrinter();
                break;
            }
        }