using System; using System.Collections.Generic; using System.Collections.Immutable; using System.IO; using System.Linq; using System.Threading.Tasks; using API.Interfaces; namespace API.Services { public class DirectoryService : IDirectoryService { /// /// Lists out top-level folders for a given directory. Filters out System and Hidden folders. /// /// Absolute path /// List of folder names public IEnumerable ListDirectory(string rootPath) { // TODO: Put some checks in here along with API to ensure that we aren't passed a file, folder exists, etc. var di = new DirectoryInfo(rootPath); var dirs = di.GetDirectories() .Where(dir => !(dir.Attributes.HasFlag(FileAttributes.Hidden) || dir.Attributes.HasFlag(FileAttributes.System))) .Select(d => d.Name).ToImmutableList(); return dirs; } } }