diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-08-13 10:51:26 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-08-13 10:51:26 -0400 |
| commit | 9b167174ad4b15974db13b997cdd44ebae095fdb (patch) | |
| tree | c6c4c46f74aa84577ea3618ef8b9a23f0722206c /MediaBrowser.Providers/Games | |
| parent | 3481d0d8e7a31ef911cb6a65aec32e7831e48df4 (diff) | |
added game xml provider
Diffstat (limited to 'MediaBrowser.Providers/Games')
| -rw-r--r-- | MediaBrowser.Providers/Games/GameProviderFromXml.cs | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/MediaBrowser.Providers/Games/GameProviderFromXml.cs b/MediaBrowser.Providers/Games/GameProviderFromXml.cs new file mode 100644 index 0000000000..4c6b9fc666 --- /dev/null +++ b/MediaBrowser.Providers/Games/GameProviderFromXml.cs @@ -0,0 +1,93 @@ +using MediaBrowser.Controller.Configuration; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.IO; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Logging; +using System; +using System.IO; +using System.Threading; +using System.Threading.Tasks; + +namespace MediaBrowser.Providers.Games +{ + public class GameProviderFromXml : BaseMetadataProvider + { + /// <summary> + /// + /// </summary> + /// <param name="logManager"></param> + /// <param name="configurationManager"></param> + public GameProviderFromXml(ILogManager logManager, IServerConfigurationManager configurationManager) + : base(logManager, configurationManager) + { + + } + + /// <summary> + /// + /// </summary> + /// <param name="item"></param> + /// <returns></returns> + public override bool Supports(BaseItem item) + { + return item is Game; + } + + protected override DateTime CompareDate(BaseItem item) + { + var xml = item.ResolveArgs.GetMetaFileByPath(Path.Combine(item.MetaLocation, "game.xml")); + return xml != null ? FileSystem.GetLastWriteTimeUtc(xml, Logger) : DateTime.MinValue; + } + + /// <summary> + /// + /// </summary> + /// <param name="item"></param> + /// <param name="force"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + public override Task<bool> FetchAsync(BaseItem item, bool force, CancellationToken cancellationToken) + { + return Fetch((Game)item, cancellationToken); + } + + /// <summary> + /// + /// </summary> + /// <param name="game"></param> + /// <param name="cancellationToken"></param> + /// <returns></returns> + private async Task<bool> Fetch(Game game, CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + + var metaFile = Path.Combine(game.MetaLocation, "game.xml"); + + if (File.Exists(metaFile)) + { + await XmlParsingResourcePool.WaitAsync(cancellationToken).ConfigureAwait(false); + + try + { + new BaseItemXmlParser<Game>(Logger).Fetch(game, metaFile, cancellationToken); + } + finally + { + XmlParsingResourcePool.Release(); + } + + } + + SetLastRefreshed(game, DateTime.UtcNow); + return true; + } + + /// <summary> + /// + /// </summary> + public override MetadataProviderPriority Priority + { + get { return MetadataProviderPriority.First; } + } + } +}
\ No newline at end of file |
