aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/EnvironmentService.cs
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2013-04-27 19:09:44 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2013-04-27 19:09:44 -0400
commite7443027090fd874f2c9a733eaf23bc43d6dd291 (patch)
tree0b39faf3d3594c84e916d269b6b8a5f1a1015269 /MediaBrowser.Api/EnvironmentService.cs
parent70ae9a2c867ed798974b123c68cb6226796cdfae (diff)
switched to built-in methods for directory browsing
Diffstat (limited to 'MediaBrowser.Api/EnvironmentService.cs')
-rw-r--r--MediaBrowser.Api/EnvironmentService.cs42
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>