diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-10-31 00:57:24 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-10-31 00:57:24 -0400 |
| commit | 7a4d5b79517f28dab668090bc4a540aa7aa75f5f (patch) | |
| tree | 61141cb89479be98be1c12ffa6558565045eee70 /MediaBrowser.Api | |
| parent | a32fd710a9016b0a90166046eac53a4d582929b1 (diff) | |
3.0.5416.0
Diffstat (limited to 'MediaBrowser.Api')
| -rw-r--r-- | MediaBrowser.Api/ConnectService.cs | 32 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserLibrary/UserLibraryService.cs | 27 |
2 files changed, 49 insertions, 10 deletions
diff --git a/MediaBrowser.Api/ConnectService.cs b/MediaBrowser.Api/ConnectService.cs index 3c3ad16b19..dafb03976c 100644 --- a/MediaBrowser.Api/ConnectService.cs +++ b/MediaBrowser.Api/ConnectService.cs @@ -34,11 +34,20 @@ namespace MediaBrowser.Api [Authenticated(Roles = "Admin")] public class CreateConnectInvite : IReturn<UserLinkResult> { - [ApiMember(Name = "ConnectUsername", Description = "Connect username", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")] + [ApiMember(Name = "ConnectUsername", Description = "Connect username", IsRequired = true, DataType = "string", ParameterType = "body", Verb = "POST")] public string ConnectUsername { get; set; } - [ApiMember(Name = "SendingUserId", Description = "Sending User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "DELETE")] + [ApiMember(Name = "SendingUserId", Description = "Sending User Id", IsRequired = true, DataType = "string", ParameterType = "body", Verb = "POST")] public string SendingUserId { get; set; } + + [ApiMember(Name = "ExcludeLibraries", Description = "ExcludeLibraries", IsRequired = true, DataType = "string", ParameterType = "body", Verb = "POST")] + public string ExcludedLibraries { get; set; } + + [ApiMember(Name = "ExcludedChannels", Description = "ExcludedChannels", IsRequired = true, DataType = "string", ParameterType = "body", Verb = "POST")] + public string ExcludedChannels { get; set; } + + [ApiMember(Name = "EnableLiveTv", Description = "EnableLiveTv", IsRequired = true, DataType = "string", ParameterType = "body", Verb = "POST")] + public bool EnableLiveTv { get; set; } } @@ -83,7 +92,24 @@ namespace MediaBrowser.Api public object Post(CreateConnectInvite request) { - return _connectManager.InviteUser(request.SendingUserId, request.ConnectUsername); + var excludeLibraries = (request.ExcludedLibraries ?? string.Empty) + .Split(',') + .Where(i => !string.IsNullOrWhiteSpace(i)) + .ToArray(); + + var excludedChannels = (request.ExcludedChannels ?? string.Empty) + .Split(',') + .Where(i => !string.IsNullOrWhiteSpace(i)) + .ToArray(); + + return _connectManager.InviteUser(new ConnectAuthorizationRequest + { + ConnectUserName = request.ConnectUsername, + SendingUserId = request.SendingUserId, + ExcludedLibraries = excludeLibraries, + ExcludedChannels = excludedChannels, + EnableLiveTv = request.EnableLiveTv + }); } public void Delete(DeleteConnectLink request) diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs index ff86c8473b..4722df6415 100644 --- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs +++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs @@ -8,6 +8,7 @@ using MediaBrowser.Model.Dto; using MediaBrowser.Model.Entities; using MediaBrowser.Model.Library; using MediaBrowser.Model.Querying; +using MoreLinq; using ServiceStack; using System; using System.Collections.Generic; @@ -259,7 +260,7 @@ namespace MediaBrowser.Api.UserLibrary [ApiMember(Name = "GroupItems", Description = "Whether or not to group items into a parent container.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")] public bool GroupItems { get; set; } - + public GetLatestMedia() { Limit = 20; @@ -314,17 +315,20 @@ namespace MediaBrowser.Api.UserLibrary var user = _userManager.GetUserById(request.UserId); // Avoid implicitly captured closure - var libraryItems = GetAllLibraryItems(request.UserId, _userManager, _libraryManager, request.ParentId) - .OrderByDescending(i => i.DateCreated) + var libraryItems = string.IsNullOrEmpty(request.ParentId) && user != null ? + GetItemsConfiguredForLatest(user) : + GetAllLibraryItems(request.UserId, _userManager, _libraryManager, request.ParentId); + + libraryItems = libraryItems.OrderByDescending(i => i.DateCreated) .Where(i => i.LocationType != LocationType.Virtual); //if (request.IsFolder.HasValue) //{ - //var val = request.IsFolder.Value; - libraryItems = libraryItems.Where(f => f.IsFolder == false); + //var val = request.IsFolder.Value; + libraryItems = libraryItems.Where(f => f.IsFolder == false); //} - + if (!string.IsNullOrEmpty(request.IncludeItemTypes)) { var vals = request.IncludeItemTypes.Split(','); @@ -341,7 +345,7 @@ namespace MediaBrowser.Api.UserLibrary libraryItems = libraryItems.Where(f => f.IsPlayed(currentUser) == val) .Take(takeLimit); } - + // Avoid implicitly captured closure var items = libraryItems .ToList(); @@ -400,6 +404,15 @@ namespace MediaBrowser.Api.UserLibrary return ToOptimizedResult(dtos.ToList()); } + private IEnumerable<BaseItem> GetItemsConfiguredForLatest(User user) + { + return user.RootFolder.GetChildren(user, true) + .OfType<Folder>() + .Where(i => !user.Configuration.LatestItemsExcludes.Contains(i.Id.ToString("N"))) + .SelectMany(i => i.GetRecursiveChildren(user)) + .DistinctBy(i => i.Id); + } + public async Task<object> Get(GetUserViews request) { var user = _userManager.GetUserById(request.UserId); |
