diff options
Diffstat (limited to 'MediaBrowser.Api')
| -rw-r--r-- | MediaBrowser.Api/ItemUpdateService.cs | 7 | ||||
| -rw-r--r-- | MediaBrowser.Api/Sync/SyncService.cs | 16 | ||||
| -rw-r--r-- | MediaBrowser.Api/TvShowsService.cs | 15 | ||||
| -rw-r--r-- | MediaBrowser.Api/UserService.cs | 4 |
4 files changed, 32 insertions, 10 deletions
diff --git a/MediaBrowser.Api/ItemUpdateService.cs b/MediaBrowser.Api/ItemUpdateService.cs index ea90afc3b..6517d738b 100644 --- a/MediaBrowser.Api/ItemUpdateService.cs +++ b/MediaBrowser.Api/ItemUpdateService.cs @@ -83,6 +83,13 @@ namespace MediaBrowser.Api { info.ContentTypeOptions = GetContentTypeOptions(true); info.ContentType = configuredContentType; + + if (string.Equals(inheritedContentType, CollectionType.TvShows, StringComparison.OrdinalIgnoreCase)) + { + info.ContentTypeOptions = info.ContentTypeOptions + .Where(i => string.IsNullOrWhiteSpace(i.Value) || string.Equals(i.Value, CollectionType.TvShows, StringComparison.OrdinalIgnoreCase)) + .ToList(); + } } } } diff --git a/MediaBrowser.Api/Sync/SyncService.cs b/MediaBrowser.Api/Sync/SyncService.cs index 094f056bd..3f57ca2a0 100644 --- a/MediaBrowser.Api/Sync/SyncService.cs +++ b/MediaBrowser.Api/Sync/SyncService.cs @@ -145,12 +145,14 @@ namespace MediaBrowser.Api.Sync private readonly ISyncManager _syncManager; private readonly IDtoService _dtoService; private readonly ILibraryManager _libraryManager; + private readonly IUserManager _userManager; - public SyncService(ISyncManager syncManager, IDtoService dtoService, ILibraryManager libraryManager) + public SyncService(ISyncManager syncManager, IDtoService dtoService, ILibraryManager libraryManager, IUserManager userManager) { _syncManager = syncManager; _dtoService = dtoService; _libraryManager = libraryManager; + _userManager = userManager; } public object Get(GetSyncTargets request) @@ -238,11 +240,15 @@ namespace MediaBrowser.Api.Sync } }; + var auth = AuthorizationContext.GetAuthorizationInfo(Request); + + var authenticatedUser = _userManager.GetUserById(auth.UserId); + var items = request.ItemIds.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(_libraryManager.GetItemById) .Where(i => i != null); - var dtos = _dtoService.GetBaseItemDtos(items, dtoOptions) + var dtos = _dtoService.GetBaseItemDtos(items, dtoOptions, authenticatedUser) .ToList(); result.Options = SyncHelper.GetSyncOptions(dtos); @@ -266,9 +272,11 @@ namespace MediaBrowser.Api.Sync } } - public object Get(GetReadySyncItems request) + public async Task<object> Get(GetReadySyncItems request) { - return ToOptimizedResult(_syncManager.GetReadySyncItems(request.TargetId)); + var result = await _syncManager.GetReadySyncItems(request.TargetId).ConfigureAwait(false); + + return ToOptimizedResult(result); } public async Task<object> Post(SyncData request) diff --git a/MediaBrowser.Api/TvShowsService.cs b/MediaBrowser.Api/TvShowsService.cs index 13ec1db3c..9c9feead5 100644 --- a/MediaBrowser.Api/TvShowsService.cs +++ b/MediaBrowser.Api/TvShowsService.cs @@ -157,6 +157,9 @@ namespace MediaBrowser.Api [ApiMember(Name = "AdjacentTo", Description = "Optional. Return items that are siblings of a supplied item.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] public string AdjacentTo { get; set; } + [ApiMember(Name = "StartItemId", Description = "Optional. Skip through the list until a given item is found.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")] + public string StartItemId { get; set; } + /// <summary> /// Skips over a given number of items within the results. Use for paging. /// </summary> @@ -475,6 +478,11 @@ namespace MediaBrowser.Api episodes = episodes.Where(i => i.IsVirtualUnaired == val); } + if (!string.IsNullOrWhiteSpace(request.StartItemId)) + { + episodes = episodes.SkipWhile(i => !string.Equals(i.Id.ToString("N"), request.StartItemId, StringComparison.OrdinalIgnoreCase)); + } + IEnumerable<BaseItem> returnItems = episodes; // This must be the last filter @@ -483,9 +491,10 @@ namespace MediaBrowser.Api returnItems = UserViewBuilder.FilterForAdjacency(returnItems, request.AdjacentTo); } - returnItems = _libraryManager.ReplaceVideosWithPrimaryVersions(returnItems); + var returnList = _libraryManager.ReplaceVideosWithPrimaryVersions(returnItems) + .ToList(); - var pagedItems = ApplyPaging(returnItems, request.StartIndex, request.Limit); + var pagedItems = ApplyPaging(returnList, request.StartIndex, request.Limit); var dtoOptions = GetDtoOptions(request); @@ -494,7 +503,7 @@ namespace MediaBrowser.Api return new ItemsResult { - TotalRecordCount = dtos.Length, + TotalRecordCount = returnList.Count, Items = dtos }; } diff --git a/MediaBrowser.Api/UserService.cs b/MediaBrowser.Api/UserService.cs index c34924f3c..c17f33348 100644 --- a/MediaBrowser.Api/UserService.cs +++ b/MediaBrowser.Api/UserService.cs @@ -365,9 +365,7 @@ namespace MediaBrowser.Api throw new ResourceNotFoundException("User not found"); } - var auth = AuthorizationContext.GetAuthorizationInfo(Request); - - var result = _userManager.GetOfflineUserDto(user, auth.DeviceId); + var result = _userManager.GetOfflineUserDto(user); return ToOptimizedResult(result); } |
