aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Implementations
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2014-07-22 12:36:34 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2014-07-22 12:36:34 -0400
commitd56fa09ccc5e1a5f9440645330ce337273fa3bd7 (patch)
treecb50ab916944cb343870483f140435bccb0c7dc1 /MediaBrowser.Server.Implementations
parent12a0a02515f3f133215d551dcc2492f4c69bb1d8 (diff)
stub out mock sync provider
Diffstat (limited to 'MediaBrowser.Server.Implementations')
-rw-r--r--MediaBrowser.Server.Implementations/Dto/DtoService.cs10
-rw-r--r--MediaBrowser.Server.Implementations/HttpServer/HttpListenerHost.cs2
-rw-r--r--MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj1
-rw-r--r--MediaBrowser.Server.Implementations/Sync/AppSyncProvider.cs4
-rw-r--r--MediaBrowser.Server.Implementations/Sync/CloudSyncProvider.cs4
-rw-r--r--MediaBrowser.Server.Implementations/Sync/MockSyncProvider.cs33
-rw-r--r--MediaBrowser.Server.Implementations/Sync/SyncManager.cs77
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;
}
}
}