Ejemplo n.º 1
0
        /// <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()));
        }
Ejemplo n.º 2
0
        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);
                }
            }
        }