stub out mock sync provider

This commit is contained in:
Luke Pulverenti
2014-07-22 12:36:34 -04:00
parent 12a0a02515
commit d56fa09ccc
22 changed files with 194 additions and 102 deletions

View File

@@ -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;

View File

@@ -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;

View File

@@ -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" />

View File

@@ -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

View File

@@ -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

View File

@@ -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();
}
}
}

View File

@@ -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(i => i.GetSyncTargets());
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)
{
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;
}
}
}