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()); }
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()); }