private void BuildDirectoriesTree(Directory <ImageContentType> directory) { IEnumerable <Directory <ImageContentType> > subDirectories = _subdirectoriesPathProvider.GetSubDirectoriesPath(directory.Path)?.Select(x => _subdirectoriesPathProvider.ContainsSubFolders(x) ? (Directory <ImageContentType>)CompositiveDirectory <ImageContentType> .New(_imageContentProvider, _fileNameProvider, x) : SimpleDirectory <ImageContentType> .New(_imageContentProvider, _fileNameProvider, x) ); if (subDirectories != null) { var root = directory as CompositiveDirectory <ImageContentType> ?? throw new InvalidOperationException($"Simple directory cannot contain sub folders; Path to directory {directory.Path}"); ((CompositiveDirectory <ImageContentType>)directory).AddRangeOfSubdirectories(subDirectories); foreach (var subDirectory in subDirectories) { BuildDirectoriesTree(subDirectory); } } }
/// <summary> /// <see cref="IImagesService{ImageContentType}.GetImages(string)"/> /// </summary> public IEnumerable <Image <ImageContentType> > GetImages(string pathToDirectory) { var rootDirectory = _subdirectoriesPathProvider.ContainsSubFolders(pathToDirectory) ? (Directory <ImageContentType>) CompositiveDirectory <ImageContentType> .New(_imageContentProvider, _fileNameProvider, pathToDirectory) : SimpleDirectory <ImageContentType> .New(_imageContentProvider, _fileNameProvider, pathToDirectory); BuildDirectoriesTree(rootDirectory); return(rootDirectory.GetImages(_imageContentProvider.GetSupportedImageFormats())); }