aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Entities/BaseItem.cs8
-rw-r--r--MediaBrowser.Controller/Library/TVUtils.cs14
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj1
-rw-r--r--MediaBrowser.Controller/Sync/ISyncManager.cs22
-rw-r--r--MediaBrowser.Controller/Sync/ISyncRepository.cs58
5 files changed, 73 insertions, 30 deletions
diff --git a/MediaBrowser.Controller/Entities/BaseItem.cs b/MediaBrowser.Controller/Entities/BaseItem.cs
index b891bcfb2..2bdbab084 100644
--- a/MediaBrowser.Controller/Entities/BaseItem.cs
+++ b/MediaBrowser.Controller/Entities/BaseItem.cs
@@ -529,10 +529,10 @@ namespace MediaBrowser.Controller.Entities
.Where(i => string.Equals(i.Name, TrailerFolderName, StringComparison.OrdinalIgnoreCase))
.SelectMany(i => i.EnumerateFiles("*", SearchOption.TopDirectoryOnly))
.ToList();
-
+
// Support plex/xbmc convention
files.AddRange(fileSystemChildren.OfType<FileInfo>()
- .Where(i => System.IO.Path.GetFileNameWithoutExtension(i.Name).EndsWith(XbmcTrailerFileSuffix, StringComparison.OrdinalIgnoreCase) && !string.Equals(Path, i.FullName, StringComparison.OrdinalIgnoreCase))
+ .Where(i => FileSystem.GetFileNameWithoutExtension(i).EndsWith(XbmcTrailerFileSuffix, StringComparison.OrdinalIgnoreCase) && !string.Equals(Path, i.FullName, StringComparison.OrdinalIgnoreCase))
);
return LibraryManager.ResolvePaths<Trailer>(files, directoryService, null).Select(video =>
@@ -564,7 +564,7 @@ namespace MediaBrowser.Controller.Entities
// Support plex/xbmc convention
files.AddRange(fileSystemChildren.OfType<FileInfo>()
- .Where(i => string.Equals(System.IO.Path.GetFileNameWithoutExtension(i.Name), ThemeSongFilename, StringComparison.OrdinalIgnoreCase))
+ .Where(i => string.Equals(FileSystem.GetFileNameWithoutExtension(i), ThemeSongFilename, StringComparison.OrdinalIgnoreCase))
);
return LibraryManager.ResolvePaths<Audio.Audio>(files, directoryService, null).Select(audio =>
@@ -1564,7 +1564,7 @@ namespace MediaBrowser.Controller.Entities
if (string.IsNullOrEmpty(Name) && !string.IsNullOrEmpty(Path))
{
- Name = System.IO.Path.GetFileNameWithoutExtension(Path);
+ Name = FileSystem.GetFileNameWithoutExtension(Path);
hasChanges = true;
}
diff --git a/MediaBrowser.Controller/Library/TVUtils.cs b/MediaBrowser.Controller/Library/TVUtils.cs
index af0ff8319..86699272e 100644
--- a/MediaBrowser.Controller/Library/TVUtils.cs
+++ b/MediaBrowser.Controller/Library/TVUtils.cs
@@ -1,4 +1,5 @@
-using MediaBrowser.Controller.Entities;
+using MediaBrowser.Common.IO;
+using MediaBrowser.Controller.Entities;
using MediaBrowser.Controller.Providers;
using MediaBrowser.Controller.Resolvers;
using System;
@@ -189,11 +190,14 @@ namespace MediaBrowser.Controller.Library
/// </summary>
/// <param name="path">The path.</param>
/// <param name="directoryService">The directory service.</param>
+ /// <param name="fileSystem">The file system.</param>
/// <returns><c>true</c> if [is season folder] [the specified path]; otherwise, <c>false</c>.</returns>
- private static bool IsSeasonFolder(string path, IDirectoryService directoryService)
+ private static bool IsSeasonFolder(string path, IDirectoryService directoryService, IFileSystem fileSystem)
{
// It's a season folder if it's named as such and does not contain any audio files, apart from theme.mp3
- return GetSeasonNumberFromPath(path) != null && !directoryService.GetFiles(path).Any(i => EntityResolutionHelper.IsAudioFile(i.FullName) && !string.Equals(Path.GetFileNameWithoutExtension(i.FullName), BaseItem.ThemeSongFilename));
+ return GetSeasonNumberFromPath(path) != null &&
+ !directoryService.GetFiles(path)
+ .Any(i => EntityResolutionHelper.IsAudioFile(i.FullName) && !string.Equals(fileSystem.GetFileNameWithoutExtension(i), BaseItem.ThemeSongFilename));
}
/// <summary>
@@ -204,7 +208,7 @@ namespace MediaBrowser.Controller.Library
/// <param name="fileSystemChildren">The file system children.</param>
/// <param name="directoryService">The directory service.</param>
/// <returns><c>true</c> if [is series folder] [the specified path]; otherwise, <c>false</c>.</returns>
- public static bool IsSeriesFolder(string path, bool considerSeasonlessSeries, IEnumerable<FileSystemInfo> fileSystemChildren, IDirectoryService directoryService)
+ public static bool IsSeriesFolder(string path, bool considerSeasonlessSeries, IEnumerable<FileSystemInfo> fileSystemChildren, IDirectoryService directoryService, IFileSystem fileSystem)
{
// A folder with more than 3 non-season folders in will not becounted as a series
var nonSeriesFolders = 0;
@@ -225,7 +229,7 @@ namespace MediaBrowser.Controller.Library
if ((attributes & FileAttributes.Directory) == FileAttributes.Directory)
{
- if (IsSeasonFolder(child.FullName, directoryService))
+ if (IsSeasonFolder(child.FullName, directoryService, fileSystem))
{
return true;
}
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index 5c3f10b54..aee118f9a 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -322,6 +322,7 @@
<Compile Include="Sync\ICloudSyncProvider.cs" />
<Compile Include="Sync\ISyncManager.cs" />
<Compile Include="Sync\ISyncProvider.cs" />
+ <Compile Include="Sync\ISyncRepository.cs" />
<Compile Include="Themes\IAppThemeManager.cs" />
<Compile Include="Themes\InternalThemeImage.cs" />
</ItemGroup>
diff --git a/MediaBrowser.Controller/Sync/ISyncManager.cs b/MediaBrowser.Controller/Sync/ISyncManager.cs
index 714e71a1f..1d5ab7d3e 100644
--- a/MediaBrowser.Controller/Sync/ISyncManager.cs
+++ b/MediaBrowser.Controller/Sync/ISyncManager.cs
@@ -13,7 +13,7 @@ namespace MediaBrowser.Controller.Sync
/// </summary>
/// <param name="request">The request.</param>
/// <returns>Task.</returns>
- Task<List<SyncJob>> CreateJob(SyncJobRequest request);
+ Task<SyncJobCreationResult> CreateJob(SyncJobRequest request);
/// <summary>
/// Gets the jobs.
@@ -22,24 +22,11 @@ namespace MediaBrowser.Controller.Sync
QueryResult<SyncJob> GetJobs(SyncJobQuery query);
/// <summary>
- /// Gets the schedules.
- /// </summary>
- /// <returns>QueryResult&lt;SyncSchedule&gt;.</returns>
- QueryResult<SyncSchedule> GetSchedules(SyncScheduleQuery query);
-
- /// <summary>
/// Gets the job.
/// </summary>
/// <param name="id">The identifier.</param>
/// <returns>SyncJob.</returns>
SyncJob GetJob(string id);
-
- /// <summary>
- /// Gets the schedule.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <returns>SyncSchedule.</returns>
- SyncSchedule GetSchedule(string id);
/// <summary>
/// Cancels the job.
@@ -49,13 +36,6 @@ namespace MediaBrowser.Controller.Sync
Task CancelJob(string id);
/// <summary>
- /// Cancels the schedule.
- /// </summary>
- /// <param name="id">The identifier.</param>
- /// <returns>Task.</returns>
- Task CancelSchedule(string id);
-
- /// <summary>
/// Adds the parts.
/// </summary>
void AddParts(IEnumerable<ISyncProvider> providers);
diff --git a/MediaBrowser.Controller/Sync/ISyncRepository.cs b/MediaBrowser.Controller/Sync/ISyncRepository.cs
new file mode 100644
index 000000000..9cce69bdc
--- /dev/null
+++ b/MediaBrowser.Controller/Sync/ISyncRepository.cs
@@ -0,0 +1,58 @@
+using MediaBrowser.Model.Querying;
+using MediaBrowser.Model.Sync;
+using System.Threading.Tasks;
+
+namespace MediaBrowser.Controller.Sync
+{
+ public interface ISyncRepository
+ {
+ /// <summary>
+ /// Gets the job.
+ /// </summary>
+ /// <param name="id">The identifier.</param>
+ /// <returns>SyncJob.</returns>
+ SyncJob GetJob(string id);
+
+ /// <summary>
+ /// Creates the specified job.
+ /// </summary>
+ /// <param name="job">The job.</param>
+ /// <returns>Task.</returns>
+ Task Create(SyncJob job);
+
+ /// <summary>
+ /// Updates the specified job.
+ /// </summary>
+ /// <param name="job">The job.</param>
+ /// <returns>Task.</returns>
+ Task Update(SyncJob job);
+
+ /// <summary>
+ /// Gets the jobs.
+ /// </summary>
+ /// <param name="query">The query.</param>
+ /// <returns>QueryResult&lt;SyncJob&gt;.</returns>
+ QueryResult<SyncJob> GetJobs(SyncJobQuery query);
+
+ /// <summary>
+ /// Gets the job item.
+ /// </summary>
+ /// <param name="id">The identifier.</param>
+ /// <returns>SyncJobItem.</returns>
+ SyncJobItem GetJobItem(string id);
+
+ /// <summary>
+ /// Creates the specified job item.
+ /// </summary>
+ /// <param name="jobItem">The job item.</param>
+ /// <returns>Task.</returns>
+ Task Create(SyncJobItem jobItem);
+
+ /// <summary>
+ /// Updates the specified job item.
+ /// </summary>
+ /// <param name="jobItem">The job item.</param>
+ /// <returns>Task.</returns>
+ Task Update(SyncJobItem jobItem);
+ }
+}