diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-07-22 12:36:34 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-07-22 12:36:34 -0400 |
| commit | d56fa09ccc5e1a5f9440645330ce337273fa3bd7 (patch) | |
| tree | cb50ab916944cb343870483f140435bccb0c7dc1 /MediaBrowser.Server.Implementations | |
| parent | 12a0a02515f3f133215d551dcc2492f4c69bb1d8 (diff) | |
stub out mock sync provider
Diffstat (limited to 'MediaBrowser.Server.Implementations')
7 files changed, 116 insertions, 15 deletions
diff --git a/MediaBrowser.Server.Implementations/Dto/DtoService.cs b/MediaBrowser.Server.Implementations/Dto/DtoService.cs index f01d973d6..c4499fac0 100644 --- a/MediaBrowser.Server.Implementations/Dto/DtoService.cs +++ b/MediaBrowser.Server.Implementations/Dto/DtoService.cs @@ -12,6 +12,7 @@ using MediaBrowser.Controller.Library; using MediaBrowser.Controller.LiveTv; using MediaBrowser.Controller.Persistence; using MediaBrowser.Controller.Providers; +using MediaBrowser.Controller.Sync; using MediaBrowser.Model.Drawing; using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; @@ -38,8 +39,9 @@ namespace MediaBrowser.Server.Implementations.Dto private readonly IProviderManager _providerManager; private readonly Func<IChannelManager> _channelManagerFactory; + private readonly ISyncManager _syncManager; - public DtoService(ILogger logger, ILibraryManager libraryManager, IUserDataManager userDataRepository, IItemRepository itemRepo, IImageProcessor imageProcessor, IServerConfigurationManager config, IFileSystem fileSystem, IProviderManager providerManager, Func<IChannelManager> channelManagerFactory) + public DtoService(ILogger logger, ILibraryManager libraryManager, IUserDataManager userDataRepository, IItemRepository itemRepo, IImageProcessor imageProcessor, IServerConfigurationManager config, IFileSystem fileSystem, IProviderManager providerManager, Func<IChannelManager> channelManagerFactory, ISyncManager syncManager) { _logger = logger; _libraryManager = libraryManager; @@ -50,6 +52,7 @@ namespace MediaBrowser.Server.Implementations.Dto _fileSystem = fileSystem; _providerManager = providerManager; _channelManagerFactory = channelManagerFactory; + _syncManager = syncManager; } /// <summary> @@ -146,6 +149,11 @@ namespace MediaBrowser.Server.Implementations.Dto AttachBasicFields(dto, item, owner, fields); + if (fields.Contains(ItemFields.SyncInfo)) + { + dto.SupportsSync = _syncManager.SupportsSync(item); + } + if (fields.Contains(ItemFields.SoundtrackIds)) { var hasSoundtracks = item as IHasSoundtracks; diff --git a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs index 94715b490..d0ea07056 100644 --- a/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs +++ b/MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs @@ -158,7 +158,7 @@ namespace MediaBrowser.Server.Implementations.HttpServer HostContext.Config.HandlerFactoryPath = ListenerRequest.GetHandlerPathIfAny(UrlPrefixes.First()); _listener = NativeWebSocket.IsSupported - ? _listener = new WebSocketSharpListener(_logger, _threadPoolManager) + ? _listener = new HttpListenerServer(_logger, _threadPoolManager) : _listener = new WebSocketSharpListener(_logger, _threadPoolManager); _listener.WebSocketHandler = WebSocketHandler; diff --git a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj index 38e82db4f..9655771c6 100644 --- a/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj +++ b/MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj @@ -272,6 +272,7 @@ <Compile Include="Sorting\VideoBitRateComparer.cs" /> <Compile Include="Sync\AppSyncProvider.cs" /> <Compile Include="Sync\CloudSyncProvider.cs" /> + <Compile Include="Sync\MockSyncProvider.cs" /> <Compile Include="Sync\SyncManager.cs" /> <Compile Include="Themes\AppThemeManager.cs" /> <Compile Include="Udp\UdpMessageReceivedEventArgs.cs" /> diff --git a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs index 6dec2b717..c3cd047b6 100644 --- a/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs @@ -10,12 +10,12 @@ namespace MediaBrowser.Server.Implementations.Sync { public IEnumerable<SyncTarget> GetSyncTargets() { - throw new NotImplementedException(); + return new List<SyncTarget>(); } public DeviceProfile GetDeviceProfile(SyncTarget target) { - throw new NotImplementedException(); + return new DeviceProfile(); } public string Name diff --git a/MediaBrowser.Server.Implementations/Sync/CloudSyncProvider.cs b/MediaBrowser.Server.Implementations/Sync/CloudSyncProvider.cs index ec3ac1239..fd12b1f8a 100644 --- a/MediaBrowser.Server.Implementations/Sync/CloudSyncProvider.cs +++ b/MediaBrowser.Server.Implementations/Sync/CloudSyncProvider.cs @@ -19,12 +19,12 @@ namespace MediaBrowser.Server.Implementations.Sync public IEnumerable<SyncTarget> GetSyncTargets() { - throw new NotImplementedException(); + return new List<SyncTarget>(); } public DeviceProfile GetDeviceProfile(SyncTarget target) { - throw new NotImplementedException(); + return new DeviceProfile(); } public string Name diff --git a/MediaBrowser.Server.Implementations/Sync/MockSyncProvider.cs b/MediaBrowser.Server.Implementations/Sync/MockSyncProvider.cs new file mode 100644 index 000000000..bc079ad80 --- /dev/null +++ b/MediaBrowser.Server.Implementations/Sync/MockSyncProvider.cs @@ -0,0 +1,33 @@ +using MediaBrowser.Common.Extensions; +using MediaBrowser.Controller.Sync; +using MediaBrowser.Model.Dlna; +using MediaBrowser.Model.Sync; +using System.Collections.Generic; + +namespace MediaBrowser.Server.Implementations.Sync +{ + public class MockSyncProvider : ISyncProvider + { + public string Name + { + get { return "Dummy Sync"; } + } + + public IEnumerable<SyncTarget> GetSyncTargets() + { + return new List<SyncTarget> + { + new SyncTarget + { + Id = "mock".GetMD5().ToString("N"), + Name = "Mock Sync" + } + }; + } + + public DeviceProfile GetDeviceProfile(SyncTarget target) + { + return new DeviceProfile(); + } + } +} diff --git a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs index 508fc188d..50f1030f3 100644 --- a/MediaBrowser.Server.Implementations/Sync/SyncManager.cs +++ b/MediaBrowser.Server.Implementations/Sync/SyncManager.cs @@ -1,4 +1,7 @@ -using MediaBrowser.Controller.Sync; +using MediaBrowser.Common.Extensions; +using MediaBrowser.Controller.Entities; +using MediaBrowser.Controller.Sync; +using MediaBrowser.Model.Entities; using MediaBrowser.Model.Querying; using MediaBrowser.Model.Sync; using System; @@ -10,7 +13,7 @@ namespace MediaBrowser.Server.Implementations.Sync { public class SyncManager : ISyncManager { - private ISyncProvider[] _providers = new ISyncProvider[]{}; + private ISyncProvider[] _providers = new ISyncProvider[] { }; public void AddParts(IEnumerable<ISyncProvider> providers) { @@ -22,11 +25,6 @@ namespace MediaBrowser.Server.Implementations.Sync throw new NotImplementedException(); } - public Task<SyncSchedule> CreateSchedule(SyncScheduleRequest request) - { - throw new NotImplementedException(); - } - public QueryResult<SyncJob> GetJobs(SyncJobQuery query) { throw new NotImplementedException(); @@ -57,9 +55,70 @@ namespace MediaBrowser.Server.Implementations.Sync throw new NotImplementedException(); } - public IEnumerable<SyncTarget> GetSyncTargets() + public IEnumerable<SyncTarget> GetSyncTargets(string userId) + { + return _providers + .SelectMany(GetSyncTargets) + .OrderBy(i => i.Name); + } + + private IEnumerable<SyncTarget> GetSyncTargets(ISyncProvider provider) + { + var providerId = GetSyncProviderId(provider); + + return provider.GetSyncTargets().Select(i => new SyncTarget + { + Name = i.Name, + Id = providerId + "-" + i.Id + }); + } + + private ISyncProvider GetSyncProvider(SyncTarget target) + { + var providerId = target.Id.Split(new[] { '-' }, 2).First(); + + return _providers.First(i => string.Equals(providerId, GetSyncProviderId(i))); + } + + private string GetSyncProviderId(ISyncProvider provider) + { + return (provider.GetType().Name + provider.Name).GetMD5().ToString("N"); + } + + public bool SupportsSync(BaseItem item) { - return _providers.SelectMany(i => i.GetSyncTargets()); + if (item.LocationType == LocationType.Virtual) + { + return false; + } + + if (string.Equals(item.MediaType, MediaType.Audio, StringComparison.OrdinalIgnoreCase) || + string.Equals(item.MediaType, MediaType.Video, StringComparison.OrdinalIgnoreCase)) + { + if (item.RunTimeTicks.HasValue) + { + var video = item as Video; + + if (video != null) + { + if (video.VideoType != VideoType.VideoFile) + { + return false; + } + + if (video.IsMultiPart) + { + return false; + } + } + + return true; + } + + return false; + } + + return false; } } } |
