public async Task <IEnumerable <ActionResponse> > ParseStreamAsync(DirectoryReaderContext streamContext) { string text = null; IEnumerable <ActionResponse> actions = Enumerable.Empty <ActionResponse>(); try { using (StreamReader streamReader = new StreamReader(streamContext.Stream)) { text = await streamReader.ReadToEndAsync().ConfigureAwait(false); } } catch { return(actions); } if (!string.IsNullOrEmpty(text)) { try { JToken val = JToken.Parse(text); if (val is JArray) { actions = val.ToObject <IEnumerable <FileActionResponse> >(); } else { if (!(val is JObject)) { throw new JsonException("Stream was neither an array nor object"); } actions = new ActionResponse[1] { val.ToObject <FileActionResponse>() }; } } catch (Exception ex) { throw new TargetedNotificationsException(ex.Message, ex); } } foreach (ActionResponse item in actions) { item.Origin = streamContext.DirectoryName + "-" + streamContext.FileName; } return(actions); }
public IEnumerable <DirectoryReaderContext> ReadAllFiles() { logger.LogInfo("Reading all files from " + path); List <DirectoryReaderContext> list = new List <DirectoryReaderContext>(); try { if (!Directory.Exists(path)) { return(list); } string[] files = Directory.GetFiles(path, "*.json"); foreach (string text in files) { logger.LogVerbose("Opening file for reading: " + text); try { string text2 = text; if (markProcessed) { logger.LogVerbose("Renaming file to .processed: " + text); string text3 = text + ".processed"; File.Move(text, text3); text2 = text3; } DirectoryReaderContext item = new DirectoryReaderContext { DirectoryName = directoryName, FileName = Path.GetFileNameWithoutExtension(text), Stream = File.OpenRead(text2) }; list.Add(item); } catch (Exception exception) { logger.LogError("Processing file failed", exception); } } return(list); } catch (Exception exception2) { logger.LogError("Checking directory failed", exception2); return(list); } }