diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-04-27 19:09:44 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-04-27 19:09:44 -0400 |
| commit | e7443027090fd874f2c9a733eaf23bc43d6dd291 (patch) | |
| tree | 0b39faf3d3594c84e916d269b6b8a5f1a1015269 /MediaBrowser.Api/EnvironmentService.cs | |
| parent | 70ae9a2c867ed798974b123c68cb6226796cdfae (diff) | |
switched to built-in methods for directory browsing
Diffstat (limited to 'MediaBrowser.Api/EnvironmentService.cs')
| -rw-r--r-- | MediaBrowser.Api/EnvironmentService.cs | 42 |
1 files changed, 31 insertions, 11 deletions
diff --git a/MediaBrowser.Api/EnvironmentService.cs b/MediaBrowser.Api/EnvironmentService.cs index 9e4e6233a..6bcef4d07 100644 --- a/MediaBrowser.Api/EnvironmentService.cs +++ b/MediaBrowser.Api/EnvironmentService.cs @@ -1,5 +1,4 @@ using MediaBrowser.Common.Net; -using MediaBrowser.Controller.IO; using MediaBrowser.Model.IO; using MediaBrowser.Model.Net; using ServiceStack.ServiceHost; @@ -206,19 +205,40 @@ namespace MediaBrowser.Api /// <returns>IEnumerable{FileSystemEntryInfo}.</returns> private IEnumerable<FileSystemEntryInfo> GetFileSystemEntries(GetDirectoryContents request) { - var fileSystemEntries = FileSystem.GetFileSystemEntries(request.Path, "*", request.IncludeFiles, request.IncludeDirectories).Where(f => !f.IsSystemFile); - - if (!request.IncludeHidden) + var entries = new DirectoryInfo(request.Path).EnumerateFileSystemInfos("*", SearchOption.TopDirectoryOnly).Where(i => { - fileSystemEntries = fileSystemEntries.Where(f => !f.IsHidden); - } + if (i.Attributes.HasFlag(FileAttributes.System)) + { + return false; + } + + if (!request.IncludeHidden && i.Attributes.HasFlag(FileAttributes.Hidden)) + { + return false; + } + + var isDirectory = i.Attributes.HasFlag(FileAttributes.Directory); + + if (!request.IncludeFiles && !isDirectory) + { + return false; + } + + if (!request.IncludeDirectories && isDirectory) + { + return false; + } + + return true; + }); - return fileSystemEntries.Select(f => new FileSystemEntryInfo + return entries.Select(f => new FileSystemEntryInfo { - Name = f.cFileName, - Path = f.Path, - Type = f.IsDirectory ? FileSystemEntryType.Directory : FileSystemEntryType.File - }); + Name = f.Name, + Path = f.FullName, + Type = f.Attributes.HasFlag(FileAttributes.Directory) ? FileSystemEntryType.Directory : FileSystemEntryType.File + + }).ToList(); } /// <summary> |
