public async Task <IEnumerable <BlobFile> > GetListWithFileInfoAsync(BlobProviderGetListArgs args) { var searchPattern = args.SearchPattern; var skipCount = args.SkipCount; var maxResultCount = args.MaxResultCount; if (string.IsNullOrEmpty(searchPattern) || string.IsNullOrWhiteSpace(searchPattern)) { throw new ArgumentException(); } var path = Directory.GetParent(FilePathCalculator.Calculate(args)).FullName; if (!Directory.Exists(path)) { return(new List <BlobFile>()); } return(await Policy.Handle <IOException>() .WaitAndRetryAsync(2, retryCount => TimeSpan.FromSeconds(retryCount)) .ExecuteAsync(async() => { var blobList = new List <BlobFile>(); var list = new List <MemoryStream>(); var files = Directory.GetFiles(path, searchPattern); var len = (files.Length <= maxResultCount) ? files.Length : maxResultCount; var paged = files.Skip(skipCount).Take(maxResultCount).ToList(); foreach (var file in paged) { var bytes = await File.ReadAllBytesAsync(file, args.CancellationToken); blobList.Add(new BlobFile(Path.GetFileName(file), bytes)); } return blobList; })); }
public FilePathCalculatorTests() { pathCalculator = new FilePathCalculator(mapping); }