diff options
| author | Eric Reed <ebr@mediabrowser3.com> | 2014-01-29 12:22:53 -0500 |
|---|---|---|
| committer | Eric Reed <ebr@mediabrowser3.com> | 2014-01-29 12:22:53 -0500 |
| commit | ab5145bcd794ee579e0064c9c0f9d15b13f72fb4 (patch) | |
| tree | d68cdabe4302cc4dda8194ee840060f48d9fa714 /MediaBrowser.Providers/People/PersonXmlProvider.cs | |
| parent | 1f31c8dbfca9ca9134d9ee779256c435f913689b (diff) | |
| parent | c0f606683a045e463f518ec466b9fc9a85f8d4fd (diff) | |
Merge branch 'master' of https://github.com/MediaBrowser/MediaBrowser
Diffstat (limited to 'MediaBrowser.Providers/People/PersonXmlProvider.cs')
| -rw-r--r-- | MediaBrowser.Providers/People/PersonXmlProvider.cs | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/MediaBrowser.Providers/People/PersonXmlProvider.cs b/MediaBrowser.Providers/People/PersonXmlProvider.cs new file mode 100644 index 000000000..900b7956c --- /dev/null +++ b/MediaBrowser.Providers/People/PersonXmlProvider.cs @@ -0,0 +1,59 @@ +using MediaBrowser.Common.IO; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Providers; +using MediaBrowser.Model.Logging; +using System.IO; +using System.Threading; +using System.Threading.Tasks; + +namespace MediaBrowser.Providers.People +{ + public class PersonXmlProvider : BaseXmlProvider, ILocalMetadataProvider<Person> + { + private readonly ILogger _logger; + + public PersonXmlProvider(IFileSystem fileSystem, ILogger logger) + : base(fileSystem) + { + _logger = logger; + } + + public async Task<MetadataResult<Person>> GetMetadata(string path, CancellationToken cancellationToken) + { + path = GetXmlPath(path); + + var result = new MetadataResult<Person>(); + + await XmlParsingResourcePool.WaitAsync(cancellationToken).ConfigureAwait(false); + + try + { + var person = new Person(); + + new BaseItemXmlParser<Person>(_logger).Fetch(person, path, cancellationToken); + result.HasMetadata = true; + result.Item = person; + } + catch (FileNotFoundException) + { + result.HasMetadata = false; + } + finally + { + XmlParsingResourcePool.Release(); + } + + return result; + } + + public string Name + { + get { return "Media Browser Xml"; } + } + + protected override string GetXmlPath(string path) + { + return Path.Combine(path, "person.xml"); + } + } +} |
