diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-10-03 23:38:46 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2015-10-03 23:38:46 -0400 |
| commit | 8ad702060ea31a3862598056509a2597f6a2b639 (patch) | |
| tree | 0ff47fe50567456746ebe028599f6dd54b52f6ab /MediaBrowser.LocalMetadata | |
| parent | 64c1628160d31482d6b74fd82a6dfd0c9cf5de96 (diff) | |
begin file system rework
Diffstat (limited to 'MediaBrowser.LocalMetadata')
16 files changed, 41 insertions, 43 deletions
diff --git a/MediaBrowser.LocalMetadata/BaseXmlProvider.cs b/MediaBrowser.LocalMetadata/BaseXmlProvider.cs index aa0f11475f..fb96cadc3c 100644 --- a/MediaBrowser.LocalMetadata/BaseXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/BaseXmlProvider.cs @@ -54,7 +54,7 @@ namespace MediaBrowser.LocalMetadata FileSystem = fileSystem; } - protected abstract FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService); + protected abstract FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService); public bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date) { diff --git a/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs b/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs index 0089a71d52..bafb230110 100644 --- a/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs +++ b/MediaBrowser.LocalMetadata/Images/EpisodeLocalImageProvider.cs @@ -60,7 +60,7 @@ namespace MediaBrowser.LocalMetadata.Images return new List<LocalImageInfo>(); } - private List<LocalImageInfo> GetFilesFromParentFolder(string filenameWithoutExtension, IEnumerable<FileSystemInfo> parentPathFiles) + private List<LocalImageInfo> GetFilesFromParentFolder(string filenameWithoutExtension, IEnumerable<FileSystemMetadata> parentPathFiles) { var thumbName = filenameWithoutExtension + "-thumb"; @@ -91,7 +91,7 @@ namespace MediaBrowser.LocalMetadata.Images }) .Select(i => new LocalImageInfo { - FileInfo = (FileInfo)i, + FileInfo = i, Type = ImageType.Primary }) .ToList(); diff --git a/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs b/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs index ba87b3c43b..90aa72a6aa 100644 --- a/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs +++ b/MediaBrowser.LocalMetadata/Images/LocalImageProvider.cs @@ -62,11 +62,11 @@ namespace MediaBrowser.LocalMetadata.Images return false; } - private IEnumerable<FileSystemInfo> GetFiles(IHasImages item, bool includeDirectories, IDirectoryService directoryService) + private IEnumerable<FileSystemMetadata> GetFiles(IHasImages item, bool includeDirectories, IDirectoryService directoryService) { if (item.LocationType != LocationType.FileSystem) { - return new List<FileSystemInfo>(); + return new List<FileSystemMetadata>(); } var path = item.ContainingFolderPath; @@ -127,7 +127,7 @@ namespace MediaBrowser.LocalMetadata.Images return list; } - private void PopulateImages(IHasImages item, List<LocalImageInfo> images, List<FileSystemInfo> files, bool supportParentSeriesFiles, IDirectoryService directoryService) + private void PopulateImages(IHasImages item, List<LocalImageInfo> images, List<FileSystemMetadata> files, bool supportParentSeriesFiles, IDirectoryService directoryService) { var imagePrefix = item.FileNameWithoutExtension + "-"; var isInMixedFolder = item.IsInMixedFolder; @@ -164,7 +164,7 @@ namespace MediaBrowser.LocalMetadata.Images } } - private void PopulatePrimaryImages(IHasImages item, List<LocalImageInfo> images, List<FileSystemInfo> files, string imagePrefix, bool isInMixedFolder) + private void PopulatePrimaryImages(IHasImages item, List<LocalImageInfo> images, List<FileSystemMetadata> files, string imagePrefix, bool isInMixedFolder) { var names = new List<string> { @@ -206,7 +206,7 @@ namespace MediaBrowser.LocalMetadata.Images } } - private void PopulateBackdrops(IHasImages item, List<LocalImageInfo> images, List<FileSystemInfo> files, string imagePrefix, bool isInMixedFolder, IDirectoryService directoryService) + private void PopulateBackdrops(IHasImages item, List<LocalImageInfo> images, List<FileSystemMetadata> files, string imagePrefix, bool isInMixedFolder, IDirectoryService directoryService) { PopulateBackdrops(images, files, imagePrefix, "backdrop", "backdrop", isInMixedFolder, ImageType.Backdrop); @@ -261,12 +261,12 @@ namespace MediaBrowser.LocalMetadata.Images })); } - private void PopulateScreenshots(List<LocalImageInfo> images, List<FileSystemInfo> files, string imagePrefix, bool isInMixedFolder) + private void PopulateScreenshots(List<LocalImageInfo> images, List<FileSystemMetadata> files, string imagePrefix, bool isInMixedFolder) { PopulateBackdrops(images, files, imagePrefix, "screenshot", "screenshot", isInMixedFolder, ImageType.Screenshot); } - private void PopulateBackdrops(List<LocalImageInfo> images, List<FileSystemInfo> files, string imagePrefix, string firstFileName, string subsequentFileNamePrefix, bool isInMixedFolder, ImageType type) + private void PopulateBackdrops(List<LocalImageInfo> images, List<FileSystemMetadata> files, string imagePrefix, string firstFileName, string subsequentFileNamePrefix, bool isInMixedFolder, ImageType type) { AddImage(files, images, imagePrefix + firstFileName, type); @@ -349,7 +349,7 @@ namespace MediaBrowser.LocalMetadata.Images } } - private bool AddImage(List<FileSystemInfo> files, List<LocalImageInfo> images, string name, string imagePrefix, bool isInMixedFolder, ImageType type) + private bool AddImage(List<FileSystemMetadata> files, List<LocalImageInfo> images, string name, string imagePrefix, bool isInMixedFolder, ImageType type) { var added = AddImage(files, images, imagePrefix + name, type); @@ -364,9 +364,9 @@ namespace MediaBrowser.LocalMetadata.Images return added; } - private bool AddImage(IEnumerable<FileSystemInfo> files, List<LocalImageInfo> images, string name, ImageType type) + private bool AddImage(IEnumerable<FileSystemMetadata> files, List<LocalImageInfo> images, string name, ImageType type) { - var image = GetImage(files, name) as FileInfo; + var image = GetImage(files, name); if (image != null) { @@ -382,7 +382,7 @@ namespace MediaBrowser.LocalMetadata.Images return false; } - private void AddCacheKeyImage(IEnumerable<FileSystemInfo> files, List<LocalImageInfo> images, ImageType type) + private void AddCacheKeyImage(IEnumerable<FileSystemMetadata> files, List<LocalImageInfo> images, ImageType type) { var candidates = files .Where(i => _fileSystem.GetFileNameWithoutExtension(i).StartsWith(type.ToString() + "_key_", StringComparison.OrdinalIgnoreCase)) @@ -390,7 +390,7 @@ namespace MediaBrowser.LocalMetadata.Images var image = BaseItem.SupportedImageExtensions .Select(i => candidates.FirstOrDefault(c => string.Equals(c.Extension, i, StringComparison.OrdinalIgnoreCase))) - .FirstOrDefault(i => i != null) as FileInfo; + .FirstOrDefault(i => i != null); if (image != null) { @@ -402,7 +402,7 @@ namespace MediaBrowser.LocalMetadata.Images } } - private FileSystemInfo GetImage(IEnumerable<FileSystemInfo> files, string name) + private FileSystemMetadata GetImage(IEnumerable<FileSystemMetadata> files, string name) { return files.FirstOrDefault(i => ((i.Attributes & FileAttributes.Directory) != FileAttributes.Directory) && string.Equals(name, _fileSystem.GetFileNameWithoutExtension(i), StringComparison.OrdinalIgnoreCase)); } diff --git a/MediaBrowser.LocalMetadata/Parsers/EpisodeXmlParser.cs b/MediaBrowser.LocalMetadata/Parsers/EpisodeXmlParser.cs index 08454c8e71..c4c9ae07fb 100644 --- a/MediaBrowser.LocalMetadata/Parsers/EpisodeXmlParser.cs +++ b/MediaBrowser.LocalMetadata/Parsers/EpisodeXmlParser.cs @@ -8,6 +8,7 @@ using System.Globalization; using System.IO; using System.Threading; using System.Xml; +using MediaBrowser.Common.IO; namespace MediaBrowser.LocalMetadata.Parsers { @@ -17,10 +18,12 @@ namespace MediaBrowser.LocalMetadata.Parsers public class EpisodeXmlParser : BaseItemXmlParser<Episode> { private List<LocalImageInfo> _imagesFound; + private readonly IFileSystem _fileSystem; - public EpisodeXmlParser(ILogger logger) + public EpisodeXmlParser(ILogger logger, IFileSystem fileSystem) : base(logger) { + _fileSystem = fileSystem; } private string _xmlPath; @@ -80,7 +83,7 @@ namespace MediaBrowser.LocalMetadata.Parsers var parentFolder = Path.GetDirectoryName(_xmlPath); filename = Path.Combine(parentFolder, filename); - var file = new FileInfo(filename); + var file = _fileSystem.GetFileInfo(filename); if (file.Exists) { diff --git a/MediaBrowser.LocalMetadata/Providers/BoxSetXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/BoxSetXmlProvider.cs index fc22e75c5d..0d4d327034 100644 --- a/MediaBrowser.LocalMetadata/Providers/BoxSetXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/BoxSetXmlProvider.cs @@ -26,7 +26,7 @@ namespace MediaBrowser.LocalMetadata.Providers new BoxSetXmlParser(_logger).Fetch(result, path, cancellationToken); } - protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) + protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService) { return directoryService.GetFile(Path.Combine(info.Path, "collection.xml")); } diff --git a/MediaBrowser.LocalMetadata/Providers/EpisodeXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/EpisodeXmlProvider.cs index bf27300326..8b181a0435 100644 --- a/MediaBrowser.LocalMetadata/Providers/EpisodeXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/EpisodeXmlProvider.cs @@ -25,12 +25,12 @@ namespace MediaBrowser.LocalMetadata.Providers var images = new List<LocalImageInfo>(); var chapters = new List<ChapterInfo>(); - new EpisodeXmlParser(_logger).Fetch(result, images, path, cancellationToken); + new EpisodeXmlParser(_logger, FileSystem).Fetch(result, images, path, cancellationToken); result.Images = images; } - protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) + protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService) { var metadataPath = Path.GetDirectoryName(info.Path); metadataPath = Path.Combine(metadataPath, "metadata"); diff --git a/MediaBrowser.LocalMetadata/Providers/FolderXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/FolderXmlProvider.cs index bf059c553f..6b9450a0b6 100644 --- a/MediaBrowser.LocalMetadata/Providers/FolderXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/FolderXmlProvider.cs @@ -25,9 +25,9 @@ namespace MediaBrowser.LocalMetadata.Providers new BaseItemXmlParser<Folder>(_logger).Fetch(result, path, cancellationToken); } - protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) + protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService) { - return new FileInfo(Path.Combine(info.Path, "folder.xml")); + return directoryService.GetFile(Path.Combine(info.Path, "folder.xml")); } } } diff --git a/MediaBrowser.LocalMetadata/Providers/GameSystemXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/GameSystemXmlProvider.cs index f51605f067..a6ef9983b6 100644 --- a/MediaBrowser.LocalMetadata/Providers/GameSystemXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/GameSystemXmlProvider.cs @@ -23,7 +23,7 @@ namespace MediaBrowser.LocalMetadata.Providers new GameSystemXmlParser(_logger).Fetch(result, path, cancellationToken); } - protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) + protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService) { return directoryService.GetFile(Path.Combine(info.Path, "gamesystem.xml")); } diff --git a/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs index 7ee2c768b6..c0c46b9556 100644 --- a/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/GameXmlProvider.cs @@ -23,12 +23,12 @@ namespace MediaBrowser.LocalMetadata.Providers new GameXmlParser(_logger).Fetch(result, path, cancellationToken); } - protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) + protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService) { var specificFile = Path.ChangeExtension(info.Path, ".xml"); - var file = new FileInfo(specificFile); + var file = FileSystem.GetFileInfo(specificFile); - return info.IsInMixedFolder || file.Exists ? file : new FileInfo(Path.Combine(Path.GetDirectoryName(info.Path), "game.xml")); + return info.IsInMixedFolder || file.Exists ? file : FileSystem.GetFileInfo(Path.Combine(Path.GetDirectoryName(info.Path), "game.xml")); } } } diff --git a/MediaBrowser.LocalMetadata/Providers/MovieXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/MovieXmlProvider.cs index 82c7dbd673..2d0de082e5 100644 --- a/MediaBrowser.LocalMetadata/Providers/MovieXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/MovieXmlProvider.cs @@ -23,27 +23,22 @@ namespace MediaBrowser.LocalMetadata.Providers new MovieXmlParser(_logger).Fetch(result, path, cancellationToken); } - protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) + protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService) { return GetXmlFileInfo(info, FileSystem); } - public static FileInfo GetXmlFileInfo(ItemInfo info, IFileSystem fileSystem) + public static FileSystemMetadata GetXmlFileInfo(ItemInfo info, IFileSystem fileSystem) { var fileInfo = fileSystem.GetFileSystemInfo(info.Path); - var directoryInfo = fileInfo as DirectoryInfo; - - if (directoryInfo == null) - { - directoryInfo = new DirectoryInfo(Path.GetDirectoryName(info.Path)); - } + var directoryInfo = fileInfo.IsDirectory ? fileInfo : fileSystem.GetDirectoryInfo(Path.GetDirectoryName(info.Path)); var directoryPath = directoryInfo.FullName; var specificFile = Path.Combine(directoryPath, fileSystem.GetFileNameWithoutExtension(info.Path) + ".xml"); - var file = new FileInfo(specificFile); + var file = fileSystem.GetFileInfo(specificFile); // In a mixed folder, only {moviename}.xml is supported if (info.IsInMixedFolder) @@ -52,7 +47,7 @@ namespace MediaBrowser.LocalMetadata.Providers } // If in it's own folder, prefer movie.xml, but allow the specific file as well - var movieFile = new FileInfo(Path.Combine(directoryPath, "movie.xml")); + var movieFile = fileSystem.GetFileInfo(Path.Combine(directoryPath, "movie.xml")); return movieFile.Exists ? movieFile : file; } diff --git a/MediaBrowser.LocalMetadata/Providers/MusicVideoXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/MusicVideoXmlProvider.cs index 3171dd9a71..7e31f30800 100644 --- a/MediaBrowser.LocalMetadata/Providers/MusicVideoXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/MusicVideoXmlProvider.cs @@ -23,7 +23,7 @@ namespace MediaBrowser.LocalMetadata.Providers new MusicVideoXmlParser(_logger).Fetch(result, path, cancellationToken); } - protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) + protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService) { return MovieXmlProvider.GetXmlFileInfo(info, FileSystem); } diff --git a/MediaBrowser.LocalMetadata/Providers/PersonXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/PersonXmlProvider.cs index 115d5b0414..32af7011a2 100644 --- a/MediaBrowser.LocalMetadata/Providers/PersonXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/PersonXmlProvider.cs @@ -22,7 +22,7 @@ namespace MediaBrowser.LocalMetadata.Providers new BaseItemXmlParser<Person>(_logger).Fetch(result, path, cancellationToken); } - protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) + protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService) { return directoryService.GetFile(Path.Combine(info.Path, "person.xml")); } diff --git a/MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs index 3de311e2bb..f66c6f232a 100644 --- a/MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/PlaylistXmlProvider.cs @@ -23,7 +23,7 @@ namespace MediaBrowser.LocalMetadata.Providers new PlaylistXmlParser(_logger).Fetch(result, path, cancellationToken); } - protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) + protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService) { return directoryService.GetFile(Path.Combine(info.Path, "playlist.xml")); } diff --git a/MediaBrowser.LocalMetadata/Providers/SeasonXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/SeasonXmlProvider.cs index f0c8f0fa1b..4d68d9c7b0 100644 --- a/MediaBrowser.LocalMetadata/Providers/SeasonXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/SeasonXmlProvider.cs @@ -26,7 +26,7 @@ namespace MediaBrowser.LocalMetadata.Providers new SeasonXmlParser(_logger).Fetch(result, path, cancellationToken); } - protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) + protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService) { return directoryService.GetFile(Path.Combine(info.Path, "season.xml")); } diff --git a/MediaBrowser.LocalMetadata/Providers/SeriesXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/SeriesXmlProvider.cs index 80fdad4837..17d80d87ad 100644 --- a/MediaBrowser.LocalMetadata/Providers/SeriesXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/SeriesXmlProvider.cs @@ -26,7 +26,7 @@ namespace MediaBrowser.LocalMetadata.Providers new SeriesXmlParser(_logger).Fetch(result, path, cancellationToken); } - protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) + protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService) { return directoryService.GetFile(Path.Combine(info.Path, "series.xml")); } diff --git a/MediaBrowser.LocalMetadata/Providers/VideoXmlProvider.cs b/MediaBrowser.LocalMetadata/Providers/VideoXmlProvider.cs index 56d289f974..17fd9cbd8f 100644 --- a/MediaBrowser.LocalMetadata/Providers/VideoXmlProvider.cs +++ b/MediaBrowser.LocalMetadata/Providers/VideoXmlProvider.cs @@ -23,7 +23,7 @@ namespace MediaBrowser.LocalMetadata.Providers new VideoXmlParser(_logger).Fetch(result, path, cancellationToken); } - protected override FileSystemInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService) + protected override FileSystemMetadata GetXmlFile(ItemInfo info, IDirectoryService directoryService) { return MovieXmlProvider.GetXmlFileInfo(info, FileSystem); } |
