async Task <List <NodeDetectionToken.ConsoleLogEntry> > GetLogs(IEnumerableAsync <MessagePrefixesPair[]> input)
        {
            var retVal = new Dictionary <string, NodeDetectionToken.ConsoleLogEntry?>();
            await input.ForEach(messages =>
            {
                foreach (var msg in messages)
                {
                    if (msg.Message.File == "CONSOLE")
                    {
                        var m = consoleLogRegex.Match(msg.Message.Text);
                        if (m.Success)
                        {
                            var entry = new NodeDetectionToken.ConsoleLogEntry(m.Groups[1].Value, msg.Message.Timestamp);
                            if (retVal.ContainsKey(entry.LogText))
                            {
                                retVal[entry.LogText] = null;
                            }
                            else
                            {
                                retVal[entry.LogText] = entry;
                            }
                        }
                    }
                }
                return(Task.FromResult(true));
            });

            return(retVal.Values.Where(x => x.HasValue).Select(x => x.Value).ToList());
        }
Пример #2
0
        async Task <List <NodeDetectionToken.ConsoleLogEntry> > GetLogs(IEnumerableAsync <MessagePrefixesPair <Message>[]> input)
        {
            var retVal = new Dictionary <string, NodeDetectionToken.ConsoleLogEntry?>();
            await input.ForEach(messages =>
            {
                foreach (var msg in messages)
                {
                    if (msg.Prefixes.Contains(consoleApiPrefix))
                    {
                        var arg = DevTools.Events.LogMessage.Parse(msg.Message.Text)?.ParsePayload <DevTools.Events.Runtime.LogAPICalled>()?.args?[0];
                        if (arg != null && arg.type == "string")
                        {
                            var entry = new NodeDetectionToken.ConsoleLogEntry(arg.value.ToString(), msg.Message.Timestamp);
                            if (retVal.ContainsKey(entry.LogText))
                            {
                                retVal[entry.LogText] = null;
                            }
                            else
                            {
                                retVal[entry.LogText] = entry;
                            }
                        }
                    }
                }
                return(Task.FromResult(true));
            });

            return(retVal.Values.Where(x => x.HasValue).Select(x => x.Value).ToList());
        }