public async Task <List <SmsMessage> > ParseCsvFileAsync(string title, IFormFile file, bool headersExistanceMarker) { var csvParser = ParserFactory.BuildCsvParser(); var tempDir = _configuration.GetSection("Storage")["TempDir"]; var fileStream = file.OpenReadStream(); var targetCsvPath = Path.Combine(tempDir, title); if (fileStream.CanRead && fileStream.Length > 0) { var buffer = new byte[fileStream.Length]; await fileStream.ReadAsync(buffer); try { File.WriteAllBytes(targetCsvPath, buffer); } catch (Exception e) { Debug.WriteLine(e.Message); } _ = new List <SmsMessage>(); var csvDocument = await csvParser.Parse(targetCsvPath, headersExistanceMarker); List <SmsMessage> messages; if (headersExistanceMarker) { messages = ProcessCsvWithHeaders(csvDocument); } else { messages = ProcessCsvWithoutHeaders(csvDocument); } return(messages); } else { Debug.WriteLine("Couldn't read from input file stream or it was 0 length stream!"); return(new List <SmsMessage>()); } }