public SourceFileEnumerator(IEnumerable<Regex> directoryExclusionFilters, IDirectoryFunctions directoryFunctions)
    {
      if (directoryExclusionFilters == null)
        throw new ArgumentNullException(nameof(directoryExclusionFilters));

      if (directoryFunctions == null)
        throw new ArgumentNullException(nameof(directoryFunctions));

      DirectoryExclusionFilters = directoryExclusionFilters;
      DirectoryFunctions = directoryFunctions;
    }
        public SourceFileEnumerator(IEnumerable <Regex> directoryExclusionFilters, IDirectoryFunctions directoryFunctions)
        {
            if (directoryExclusionFilters == null)
            {
                throw new ArgumentNullException(nameof(directoryExclusionFilters));
            }

            if (directoryFunctions == null)
            {
                throw new ArgumentNullException(nameof(directoryFunctions));
            }

            DirectoryExclusionFilters = directoryExclusionFilters;
            DirectoryFunctions        = directoryFunctions;
        }
        public FileSystemImageStorage(IFileStorageConfiguration configuration, IDirectoryFunctions directoryFunctions, IFileFunctions fileFunctions)
        {
            _fileFunctions = fileFunctions;

            var directory = (configuration != null && !string.IsNullOrWhiteSpace(configuration.StorageDirectory))
                                ? configuration.StorageDirectory
                                : DefaultImageDirectory;

            _imageDirectory = Path.Combine(Environment.CurrentDirectory, directory);

            if (!directoryFunctions.Exists(_imageDirectory))
            {
                try
                {
                    directoryFunctions.CreateDirectory(_imageDirectory);
                }
                catch (Exception exception)
                {
                    Trace.TraceError("Could not create image storage directory {0}. {1}", _imageDirectory, exception.Message);
                    Trace.TraceError(exception.ToString());
                }
            }
        }