aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Controller
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Controller')
-rw-r--r--MediaBrowser.Controller/Entities/UserViewBuilder.cs53
-rw-r--r--MediaBrowser.Controller/MediaBrowser.Controller.csproj4
-rw-r--r--MediaBrowser.Controller/Sync/IHasDynamicAccess.cs4
-rw-r--r--MediaBrowser.Controller/Sync/IServerSyncProvider.cs34
-rw-r--r--MediaBrowser.Controller/Sync/ISyncDataProvider.cs14
-rw-r--r--MediaBrowser.Controller/Sync/SyncedFileInfo.cs5
-rw-r--r--MediaBrowser.Controller/packages.config1
7 files changed, 65 insertions, 50 deletions
diff --git a/MediaBrowser.Controller/Entities/UserViewBuilder.cs b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
index 562ae9f62..63ce223af 100644
--- a/MediaBrowser.Controller/Entities/UserViewBuilder.cs
+++ b/MediaBrowser.Controller/Entities/UserViewBuilder.cs
@@ -50,8 +50,8 @@ namespace MediaBrowser.Controller.Entities
{
var user = query.User;
- if (query.IncludeItemTypes != null &&
- query.IncludeItemTypes.Length == 1 &&
+ if (query.IncludeItemTypes != null &&
+ query.IncludeItemTypes.Length == 1 &&
string.Equals(query.IncludeItemTypes[0], "Playlist", StringComparison.OrdinalIgnoreCase))
{
if (!string.Equals(viewType, CollectionType.Playlists, StringComparison.OrdinalIgnoreCase))
@@ -117,9 +117,7 @@ namespace MediaBrowser.Controller.Entities
case CollectionType.LiveTv:
{
- var result = await GetLiveTvFolders(user).ConfigureAwait(false);
-
- return GetResult(result, queryParent, query);
+ return await GetLiveTvView(queryParent, user, query).ConfigureAwait(false);
}
case CollectionType.Books:
@@ -215,6 +213,9 @@ namespace MediaBrowser.Controller.Entities
case SpecialFolder.MusicLatest:
return GetMusicLatest(queryParent, user, query);
+ case SpecialFolder.MusicPlaylists:
+ return await GetMusicPlaylists(queryParent, user, query).ConfigureAwait(false);
+
case SpecialFolder.MusicAlbums:
return GetMusicAlbums(queryParent, user, query);
@@ -277,12 +278,13 @@ namespace MediaBrowser.Controller.Entities
var list = new List<BaseItem>();
list.Add(await GetUserView(SpecialFolder.MusicLatest, user, "0", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MusicAlbums, user, "1", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MusicAlbumArtists, user, "2", parent).ConfigureAwait(false));
- //list.Add(await GetUserView(SpecialFolder.MusicArtists, user, "3", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MusicSongs, user, "4", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MusicGenres, user, "5", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.MusicFavorites, user, "6", parent).ConfigureAwait(false));
+ list.Add(await GetUserView(SpecialFolder.MusicPlaylists, user, "1", parent).ConfigureAwait(false));
+ list.Add(await GetUserView(SpecialFolder.MusicAlbums, user, "2", parent).ConfigureAwait(false));
+ list.Add(await GetUserView(SpecialFolder.MusicAlbumArtists, user, "3", parent).ConfigureAwait(false));
+ //list.Add(await GetUserView(SpecialFolder.MusicArtists, user, "4", parent).ConfigureAwait(false));
+ list.Add(await GetUserView(SpecialFolder.MusicSongs, user, "5", parent).ConfigureAwait(false));
+ list.Add(await GetUserView(SpecialFolder.MusicGenres, user, "6", parent).ConfigureAwait(false));
+ list.Add(await GetUserView(SpecialFolder.MusicFavorites, user, "7", parent).ConfigureAwait(false));
return GetResult(list, parent, query);
}
@@ -423,6 +425,14 @@ namespace MediaBrowser.Controller.Entities
return GetResult(artists, parent, query);
}
+ private Task<QueryResult<BaseItem>> GetMusicPlaylists(Folder parent, User user, InternalItemsQuery query)
+ {
+ query.IncludeItemTypes = new[] { "Playlist" };
+ query.Recursive = true;
+
+ return parent.GetItems(query);
+ }
+
private QueryResult<BaseItem> GetMusicAlbums(Folder parent, User user, InternalItemsQuery query)
{
var items = GetRecursiveChildren(parent, user, new[] { CollectionType.Music, CollectionType.MusicVideos }, i => (i is MusicAlbum) && FilterItem(i, query));
@@ -1769,17 +1779,26 @@ namespace MediaBrowser.Controller.Entities
return parent.GetRecursiveChildren(user, filter);
}
- private async Task<IEnumerable<BaseItem>> GetLiveTvFolders(User user)
+ private async Task<QueryResult<BaseItem>> GetLiveTvView(Folder queryParent, User user, InternalItemsQuery query)
{
- var list = new List<BaseItem>();
+ if (query.Recursive)
+ {
+ return await _liveTvManager.GetInternalRecordings(new RecordingQuery
+ {
+ IsInProgress = false,
+ Status = RecordingStatus.Completed,
+ UserId = user.Id.ToString("N")
- var parent = user.RootFolder;
+ }, CancellationToken.None).ConfigureAwait(false);
+ }
+
+ var list = new List<BaseItem>();
//list.Add(await GetUserSubView(SpecialFolder.LiveTvNowPlaying, user, "0", parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.LiveTvChannels, user, string.Empty, parent).ConfigureAwait(false));
- list.Add(await GetUserView(SpecialFolder.LiveTvRecordingGroups, user, string.Empty, parent).ConfigureAwait(false));
+ list.Add(await GetUserView(SpecialFolder.LiveTvChannels, user, string.Empty, user.RootFolder).ConfigureAwait(false));
+ list.Add(await GetUserView(SpecialFolder.LiveTvRecordingGroups, user, string.Empty, user.RootFolder).ConfigureAwait(false));
- return list;
+ return GetResult(list, queryParent, query);
}
private async Task<UserView> GetUserView(string name, string type, User user, string sortName, BaseItem parent)
diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
index ba0c266b2..b9a161a9f 100644
--- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj
+++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj
@@ -52,6 +52,10 @@
<SpecificVersion>False</SpecificVersion>
<HintPath>..\packages\morelinq.1.1.0\lib\net35\MoreLinq.dll</HintPath>
</Reference>
+ <Reference Include="Patterns.IO, Version=1.0.5580.36861, Culture=neutral, processorArchitecture=MSIL">
+ <SpecificVersion>False</SpecificVersion>
+ <HintPath>..\packages\Patterns.IO.1.0.0.3\lib\portable-net45+sl4+wp71+win8+wpa81\Patterns.IO.dll</HintPath>
+ </Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data" />
diff --git a/MediaBrowser.Controller/Sync/IHasDynamicAccess.cs b/MediaBrowser.Controller/Sync/IHasDynamicAccess.cs
index f907de729..cf868a381 100644
--- a/MediaBrowser.Controller/Sync/IHasDynamicAccess.cs
+++ b/MediaBrowser.Controller/Sync/IHasDynamicAccess.cs
@@ -9,10 +9,10 @@ namespace MediaBrowser.Controller.Sync
/// <summary>
/// Gets the synced file information.
/// </summary>
- /// <param name="remotePath">The remote path.</param>
+ /// <param name="id">The identifier.</param>
/// <param name="target">The target.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task&lt;SyncedFileInfo&gt;.</returns>
- Task<SyncedFileInfo> GetSyncedFileInfo(string remotePath, SyncTarget target, CancellationToken cancellationToken);
+ Task<SyncedFileInfo> GetSyncedFileInfo(string id, SyncTarget target, CancellationToken cancellationToken);
}
}
diff --git a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs
index 46bbbd329..6b694d26d 100644
--- a/MediaBrowser.Controller/Sync/IServerSyncProvider.cs
+++ b/MediaBrowser.Controller/Sync/IServerSyncProvider.cs
@@ -1,6 +1,7 @@
-using MediaBrowser.Model.Sync;
+using MediaBrowser.Model.Querying;
+using MediaBrowser.Model.Sync;
+using Patterns.IO;
using System;
-using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
@@ -13,46 +14,39 @@ namespace MediaBrowser.Controller.Sync
/// Transfers the file.
/// </summary>
/// <param name="stream">The stream.</param>
- /// <param name="remotePath">The remote path.</param>
+ /// <param name="pathParts">The path parts.</param>
/// <param name="target">The target.</param>
/// <param name="progress">The progress.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
- Task<SyncedFileInfo> SendFile(Stream stream, string remotePath, SyncTarget target, IProgress<double> progress, CancellationToken cancellationToken);
+ Task<SyncedFileInfo> SendFile(Stream stream, string[] pathParts, SyncTarget target, IProgress<double> progress, CancellationToken cancellationToken);
/// <summary>
/// Deletes the file.
/// </summary>
- /// <param name="path">The path.</param>
+ /// <param name="id">The identifier.</param>
/// <param name="target">The target.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task.</returns>
- Task DeleteFile(string path, SyncTarget target, CancellationToken cancellationToken);
+ Task DeleteFile(string id, SyncTarget target, CancellationToken cancellationToken);
/// <summary>
/// Gets the file.
/// </summary>
- /// <param name="path">The path.</param>
+ /// <param name="id">The identifier.</param>
/// <param name="target">The target.</param>
/// <param name="progress">The progress.</param>
/// <param name="cancellationToken">The cancellation token.</param>
/// <returns>Task&lt;Stream&gt;.</returns>
- Task<Stream> GetFile(string path, SyncTarget target, IProgress<double> progress, CancellationToken cancellationToken);
+ Task<Stream> GetFile(string id, SyncTarget target, IProgress<double> progress, CancellationToken cancellationToken);
/// <summary>
- /// Gets the full path.
+ /// Gets the files.
/// </summary>
- /// <param name="path">The path.</param>
+ /// <param name="query">The query.</param>
/// <param name="target">The target.</param>
- /// <returns>System.String.</returns>
- string GetFullPath(IEnumerable<string> path, SyncTarget target);
-
- /// <summary>
- /// Gets the parent directory path.
- /// </summary>
- /// <param name="path">The path.</param>
- /// <param name="target">The target.</param>
- /// <returns>System.String.</returns>
- string GetParentDirectoryPath(string path, SyncTarget target);
+ /// <param name="cancellationToken">The cancellation token.</param>
+ /// <returns>Task&lt;QueryResult&lt;FileMetadata&gt;&gt;.</returns>
+ Task<QueryResult<FileMetadata>> GetFiles(FileQuery query, SyncTarget target, CancellationToken cancellationToken);
}
}
diff --git a/MediaBrowser.Controller/Sync/ISyncDataProvider.cs b/MediaBrowser.Controller/Sync/ISyncDataProvider.cs
index dc3edc4e4..ebff50cb0 100644
--- a/MediaBrowser.Controller/Sync/ISyncDataProvider.cs
+++ b/MediaBrowser.Controller/Sync/ISyncDataProvider.cs
@@ -7,20 +7,12 @@ namespace MediaBrowser.Controller.Sync
public interface ISyncDataProvider
{
/// <summary>
- /// Gets the server item ids.
+ /// Gets the local items.
/// </summary>
/// <param name="target">The target.</param>
/// <param name="serverId">The server identifier.</param>
- /// <returns>Task&lt;List&lt;System.String&gt;&gt;.</returns>
- Task<List<string>> GetServerItemIds(SyncTarget target, string serverId);
-
- /// <summary>
- /// Gets the synchronize job item ids.
- /// </summary>
- /// <param name="target">The target.</param>
- /// <param name="serverId">The server identifier.</param>
- /// <returns>Task&lt;List&lt;System.String&gt;&gt;.</returns>
- Task<List<string>> GetSyncJobItemIds(SyncTarget target, string serverId);
+ /// <returns>Task&lt;List&lt;LocalItem&gt;&gt;.</returns>
+ Task<List<LocalItem>> GetLocalItems(SyncTarget target, string serverId);
/// <summary>
/// Adds the or update.
diff --git a/MediaBrowser.Controller/Sync/SyncedFileInfo.cs b/MediaBrowser.Controller/Sync/SyncedFileInfo.cs
index 550af2d55..844e7d890 100644
--- a/MediaBrowser.Controller/Sync/SyncedFileInfo.cs
+++ b/MediaBrowser.Controller/Sync/SyncedFileInfo.cs
@@ -20,6 +20,11 @@ namespace MediaBrowser.Controller.Sync
/// </summary>
/// <value>The required HTTP headers.</value>
public Dictionary<string, string> RequiredHttpHeaders { get; set; }
+ /// <summary>
+ /// Gets or sets the identifier.
+ /// </summary>
+ /// <value>The identifier.</value>
+ public string Id { get; set; }
public SyncedFileInfo()
{
diff --git a/MediaBrowser.Controller/packages.config b/MediaBrowser.Controller/packages.config
index 6df166204..8d10de2f1 100644
--- a/MediaBrowser.Controller/packages.config
+++ b/MediaBrowser.Controller/packages.config
@@ -1,4 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="morelinq" version="1.1.0" targetFramework="net45" />
+ <package id="Patterns.IO" version="1.0.0.3" targetFramework="net45" />
</packages> \ No newline at end of file