aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/BaseXmlProvider.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Providers/BaseXmlProvider.cs')
-rw-r--r--MediaBrowser.Providers/BaseXmlProvider.cs24
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