IMetadataProvider.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System;
  2. using System.Threading;
  3. using System.Threading.Tasks;
  4. namespace MediaBrowser.Controller.Providers
  5. {
  6. /// <summary>
  7. /// Marker interface
  8. /// </summary>
  9. public interface IMetadataProvider
  10. {
  11. /// <summary>
  12. /// Gets the name.
  13. /// </summary>
  14. /// <value>The name.</value>
  15. string Name { get; }
  16. }
  17. public interface IMetadataProvider<TItemType> : IMetadataProvider
  18. where TItemType : IHasMetadata
  19. {
  20. }
  21. public interface ILocalMetadataProvider : IMetadataProvider
  22. {
  23. /// <summary>
  24. /// Determines whether [has local metadata] [the specified item].
  25. /// </summary>
  26. /// <param name="item">The item.</param>
  27. /// <returns><c>true</c> if [has local metadata] [the specified item]; otherwise, <c>false</c>.</returns>
  28. bool HasLocalMetadata(IHasMetadata item);
  29. }
  30. public interface IRemoteMetadataProvider : IMetadataProvider
  31. {
  32. }
  33. public interface IRemoteMetadataProvider<TItemType> : IMetadataProvider<TItemType>, IRemoteMetadataProvider
  34. where TItemType : IHasMetadata
  35. {
  36. Task<MetadataResult<TItemType>> GetMetadata(ItemId id, CancellationToken cancellationToken);
  37. }
  38. public interface ILocalMetadataProvider<TItemType> : IMetadataProvider<TItemType>, ILocalMetadataProvider
  39. where TItemType : IHasMetadata
  40. {
  41. Task<MetadataResult<TItemType>> GetMetadata(string path, CancellationToken cancellationToken);
  42. }
  43. public interface IHasChangeMonitor
  44. {
  45. /// <summary>
  46. /// Determines whether the specified item has changed.
  47. /// </summary>
  48. /// <param name="item">The item.</param>
  49. /// <param name="date">The date.</param>
  50. /// <returns><c>true</c> if the specified item has changed; otherwise, <c>false</c>.</returns>
  51. bool HasChanged(IHasMetadata item, DateTime date);
  52. }
  53. public class MetadataResult<T>
  54. where T : IHasMetadata
  55. {
  56. public bool HasMetadata { get; set; }
  57. public T Item { get; set; }
  58. }
  59. }