CloudSyncProvider.cs 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using MediaBrowser.Common;
  2. using MediaBrowser.Controller.Sync;
  3. using MediaBrowser.Model.Dlna;
  4. using MediaBrowser.Model.Sync;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.Linq;
  8. using System.Threading;
  9. using System.Threading.Tasks;
  10. namespace MediaBrowser.Server.Implementations.Sync
  11. {
  12. public class CloudSyncProvider : IServerSyncProvider
  13. {
  14. private readonly ICloudSyncProvider[] _providers = {};
  15. public CloudSyncProvider(IApplicationHost appHost)
  16. {
  17. _providers = appHost.GetExports<ICloudSyncProvider>().ToArray();
  18. }
  19. public IEnumerable<SyncTarget> GetSyncTargets()
  20. {
  21. return _providers
  22. .SelectMany(i => i.GetSyncAccounts().Select(a => GetSyncTarget(i, a)));
  23. }
  24. public IEnumerable<SyncTarget> GetSyncTargets(string userId)
  25. {
  26. return _providers
  27. .SelectMany(i => i.GetSyncAccounts().Where(a => a.UserIds.Contains(userId, StringComparer.OrdinalIgnoreCase)).Select(a => GetSyncTarget(i, a)));
  28. }
  29. public DeviceProfile GetDeviceProfile(SyncTarget target)
  30. {
  31. return new DeviceProfile();
  32. }
  33. private SyncTarget GetSyncTarget(ICloudSyncProvider provider, SyncAccount account)
  34. {
  35. return new SyncTarget
  36. {
  37. Name = account.Name,
  38. Id = account.Name
  39. };
  40. }
  41. public string Name
  42. {
  43. get { return "Cloud Sync"; }
  44. }
  45. public Task<List<string>> GetServerItemIds(string serverId, SyncTarget target, CancellationToken cancellationToken)
  46. {
  47. throw new NotImplementedException();
  48. }
  49. public Task DeleteItem(string serverId, string itemId, SyncTarget target, CancellationToken cancellationToken)
  50. {
  51. throw new NotImplementedException();
  52. }
  53. public Task TransferItemFile(string serverId, string itemId, string[] pathParts, string name, ItemFileType fileType, SyncTarget target, CancellationToken cancellationToken)
  54. {
  55. throw new NotImplementedException();
  56. }
  57. }
  58. }