diff options
Diffstat (limited to 'MediaBrowser.Providers/BaseXmlProvider.cs')
| -rw-r--r-- | MediaBrowser.Providers/BaseXmlProvider.cs | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/MediaBrowser.Providers/BaseXmlProvider.cs b/MediaBrowser.Providers/BaseXmlProvider.cs index 521198e96..908688086 100644 --- a/MediaBrowser.Providers/BaseXmlProvider.cs +++ b/MediaBrowser.Providers/BaseXmlProvider.cs @@ -1,5 +1,7 @@ using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Logging; using System; using System.IO; using System.Threading; @@ -12,11 +14,11 @@ namespace MediaBrowser.Providers { protected IFileSystem FileSystem; - public async Task<MetadataResult<T>> GetMetadata(ItemInfo info, CancellationToken cancellationToken) + public async Task<LocalMetadataResult<T>> GetMetadata(ItemInfo info, CancellationToken cancellationToken) { - var result = new MetadataResult<T>(); + var result = new LocalMetadataResult<T>(); - var file = GetXmlFile(info); + var file = GetXmlFile(info, new DirectoryService(new NullLogger())); if (file == null) { @@ -31,13 +33,17 @@ namespace MediaBrowser.Providers { result.Item = new T(); - Fetch(result.Item, path, cancellationToken); + Fetch(result, path, cancellationToken); result.HasMetadata = true; } catch (FileNotFoundException) { result.HasMetadata = false; } + catch (DirectoryNotFoundException) + { + result.HasMetadata = false; + } finally { XmlProviderUtils.XmlParsingResourcePool.Release(); @@ -46,25 +52,25 @@ namespace MediaBrowser.Providers return result; } - protected abstract void Fetch(T item, string path, CancellationToken cancellationToken); + protected abstract void Fetch(LocalMetadataResult<T> result, string path, CancellationToken cancellationToken); protected BaseXmlProvider(IFileSystem fileSystem) { FileSystem = fileSystem; } - protected abstract FileInfo GetXmlFile(ItemInfo info); + protected abstract FileInfo GetXmlFile(ItemInfo info, IDirectoryService directoryService); - public bool HasChanged(IHasMetadata item, DateTime date) + public bool HasChanged(IHasMetadata item, IDirectoryService directoryService, DateTime date) { - var file = GetXmlFile(new ItemInfo { IsInMixedFolder = item.IsInMixedFolder, Path = item.Path }); + var file = GetXmlFile(new ItemInfo { IsInMixedFolder = item.IsInMixedFolder, Path = item.Path }, directoryService); if (file == null) { return false; } - return FileSystem.GetLastWriteTimeUtc(file) > date; + return file.Exists && FileSystem.GetLastWriteTimeUtc(file) > date; } public string Name |
