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

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