aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Providers/Games/GameXmlProvider.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Providers/Games/GameXmlProvider.cs')
-rw-r--r--MediaBrowser.Providers/Games/GameXmlProvider.cs45
1 files changed, 8 insertions, 37 deletions
diff --git a/MediaBrowser.Providers/Games/GameXmlProvider.cs b/MediaBrowser.Providers/Games/GameXmlProvider.cs
index e2a67de8d..644fe3e42 100644
--- a/MediaBrowser.Providers/Games/GameXmlProvider.cs
+++ b/MediaBrowser.Providers/Games/GameXmlProvider.cs
@@ -4,11 +4,10 @@ using MediaBrowser.Controller.Providers;
using MediaBrowser.Model.Logging;
using System.IO;
using System.Threading;
-using System.Threading.Tasks;
namespace MediaBrowser.Providers.Games
{
- public class GameXmlProvider : BaseXmlProvider, ILocalMetadataProvider<Game>
+ public class GameXmlProvider : BaseXmlProvider<Game>
{
private readonly ILogger _logger;
@@ -18,57 +17,29 @@ namespace MediaBrowser.Providers.Games
_logger = logger;
}
- public async Task<MetadataResult<Game>> GetMetadata(string path, CancellationToken cancellationToken)
+ protected override void Fetch(Game item, string path, CancellationToken cancellationToken)
{
- path = GetXmlFile(path).FullName;
-
- var result = new MetadataResult<Game>();
-
- await XmlParsingResourcePool.WaitAsync(cancellationToken).ConfigureAwait(false);
-
- try
- {
- var item = new Game();
-
- new GameXmlParser(_logger).Fetch(item, path, cancellationToken);
- result.HasMetadata = true;
- result.Item = item;
- }
- catch (FileNotFoundException)
- {
- result.HasMetadata = false;
- }
- finally
- {
- XmlParsingResourcePool.Release();
- }
-
- return result;
- }
-
- public string Name
- {
- get { return "Media Browser Xml"; }
+ new GameXmlParser(_logger).Fetch(item, path, cancellationToken);
}
- protected override FileInfo GetXmlFile(string path)
+ protected override FileInfo GetXmlFile(ItemInfo info)
{
- var fileInfo = FileSystem.GetFileSystemInfo(path);
+ var fileInfo = FileSystem.GetFileSystemInfo(info.Path);
var directoryInfo = fileInfo as DirectoryInfo;
if (directoryInfo == null)
{
- directoryInfo = new DirectoryInfo(Path.GetDirectoryName(path));
+ directoryInfo = new DirectoryInfo(Path.GetDirectoryName(info.Path));
}
var directoryPath = directoryInfo.FullName;
- var specificFile = Path.Combine(directoryPath, Path.GetFileNameWithoutExtension(path) + ".xml");
+ var specificFile = Path.Combine(directoryPath, Path.GetFileNameWithoutExtension(info.Path) + ".xml");
var file = new FileInfo(specificFile);
- return file.Exists ? file : new FileInfo(Path.Combine(directoryPath, "game.xml"));
+ return info.IsInMixedFolder || file.Exists ? file : new FileInfo(Path.Combine(directoryPath, "game.xml"));
}
}
}