aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/TvShowsService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/TvShowsService.cs')
-rw-r--r--MediaBrowser.Api/TvShowsService.cs59
1 files changed, 28 insertions, 31 deletions
diff --git a/MediaBrowser.Api/TvShowsService.cs b/MediaBrowser.Api/TvShowsService.cs
index 148e65b49..cd0c5d9e5 100644
--- a/MediaBrowser.Api/TvShowsService.cs
+++ b/MediaBrowser.Api/TvShowsService.cs
@@ -22,7 +22,7 @@ namespace MediaBrowser.Api
/// Class GetNextUpEpisodes
/// </summary>
[Route("/Shows/NextUp", "GET", Summary = "Gets a list of next up episodes")]
- public class GetNextUpEpisodes : IReturn<ItemsResult>, IHasDtoOptions
+ public class GetNextUpEpisodes : IReturn<QueryResult<BaseItemDto>>, IHasDtoOptions
{
/// <summary>
/// Gets or sets the user id.
@@ -82,7 +82,7 @@ namespace MediaBrowser.Api
}
[Route("/Shows/Upcoming", "GET", Summary = "Gets a list of upcoming episodes")]
- public class GetUpcomingEpisodes : IReturn<ItemsResult>, IHasDtoOptions
+ public class GetUpcomingEpisodes : IReturn<QueryResult<BaseItemDto>>, IHasDtoOptions
{
/// <summary>
/// Gets or sets the user id.
@@ -138,7 +138,7 @@ namespace MediaBrowser.Api
}
[Route("/Shows/{Id}/Episodes", "GET", Summary = "Gets episodes for a tv season")]
- public class GetEpisodes : IReturn<ItemsResult>, IHasItemFields, IHasDtoOptions
+ public class GetEpisodes : IReturn<QueryResult<BaseItemDto>>, IHasItemFields, IHasDtoOptions
{
/// <summary>
/// Gets or sets the user id.
@@ -206,7 +206,7 @@ namespace MediaBrowser.Api
}
[Route("/Shows/{Id}/Seasons", "GET", Summary = "Gets seasons for a tv series")]
- public class GetSeasons : IReturn<ItemsResult>, IHasItemFields, IHasDtoOptions
+ public class GetSeasons : IReturn<QueryResult<BaseItemDto>>, IHasItemFields, IHasDtoOptions
{
/// <summary>
/// Gets or sets the user id.
@@ -327,7 +327,7 @@ namespace MediaBrowser.Api
var result = new QueryResult<BaseItemDto>
{
- Items = returnList.ToArray(returnList.Count),
+ Items = returnList,
TotalRecordCount = itemsResult.Count
};
@@ -359,10 +359,9 @@ namespace MediaBrowser.Api
});
- var returnList = (await _dtoService.GetBaseItemDtos(itemsResult, options, user).ConfigureAwait(false));
- var returnItems = returnList.ToArray(returnList.Count);
+ var returnItems = (await _dtoService.GetBaseItemDtos(itemsResult, options, user).ConfigureAwait(false));
- var result = new ItemsResult
+ var result = new QueryResult<BaseItemDto>
{
TotalRecordCount = itemsResult.Count,
Items = returnItems
@@ -392,10 +391,9 @@ namespace MediaBrowser.Api
var user = _userManager.GetUserById(request.UserId);
- var returnList = (await _dtoService.GetBaseItemDtos(result.Items, options, user).ConfigureAwait(false));
- var returnItems = returnList.ToArray(returnList.Count);
+ var returnItems = (await _dtoService.GetBaseItemDtos(result.Items, options, user).ConfigureAwait(false));
- return ToOptimizedSerializedResultUsingCache(new ItemsResult
+ return ToOptimizedSerializedResultUsingCache(new QueryResult<BaseItemDto>
{
TotalRecordCount = result.TotalRecordCount,
Items = returnItems
@@ -443,14 +441,13 @@ namespace MediaBrowser.Api
IsSpecialSeason = request.IsSpecialSeason,
AdjacentTo = request.AdjacentTo
- })).OfType<Season>();
+ }));
var dtoOptions = GetDtoOptions(_authContext, request);
- var returnList = (await _dtoService.GetBaseItemDtos(seasons, dtoOptions, user).ConfigureAwait(false));
- var returnItems = returnList.ToArray(returnList.Count);
+ var returnItems = (await _dtoService.GetBaseItemDtos(seasons, dtoOptions, user).ConfigureAwait(false));
- return new ItemsResult
+ return new QueryResult<BaseItemDto>
{
TotalRecordCount = returnItems.Length,
Items = returnItems
@@ -471,7 +468,7 @@ namespace MediaBrowser.Api
{
var user = _userManager.GetUserById(request.UserId);
- IEnumerable<Episode> episodes;
+ List<BaseItem> episodes;
var dtoOptions = GetDtoOptions(_authContext, request);
@@ -499,11 +496,11 @@ namespace MediaBrowser.Api
if (season == null)
{
- episodes = new List<Episode>();
+ episodes = new List<BaseItem>();
}
else
{
- episodes = season.GetEpisodes(user, dtoOptions);
+ episodes = ((Season)season).GetEpisodes(user, dtoOptions);
}
}
else
@@ -515,44 +512,44 @@ namespace MediaBrowser.Api
throw new ResourceNotFoundException("Series not found");
}
- episodes = series.GetEpisodes(user, dtoOptions);
+ episodes = series.GetEpisodes(user, dtoOptions).ToList();
}
// Filter after the fact in case the ui doesn't want them
if (request.IsMissing.HasValue)
{
var val = request.IsMissing.Value;
- episodes = episodes.Where(i => i.IsMissingEpisode == val);
+ episodes = episodes.Where(i => ((Episode)i).IsMissingEpisode == val).ToList();
}
if (!string.IsNullOrWhiteSpace(request.StartItemId))
{
- episodes = episodes.SkipWhile(i => !string.Equals(i.Id.ToString("N"), request.StartItemId, StringComparison.OrdinalIgnoreCase));
+ episodes = episodes.SkipWhile(i => !string.Equals(i.Id.ToString("N"), request.StartItemId, StringComparison.OrdinalIgnoreCase)).ToList();
}
- IEnumerable<BaseItem> returnItems = episodes;
-
// This must be the last filter
if (!string.IsNullOrEmpty(request.AdjacentTo))
{
- returnItems = UserViewBuilder.FilterForAdjacency(returnItems, request.AdjacentTo);
+ episodes = UserViewBuilder.FilterForAdjacency(episodes, request.AdjacentTo).ToList();
}
if (string.Equals(request.SortBy, ItemSortBy.Random, StringComparison.OrdinalIgnoreCase))
{
- returnItems = returnItems.OrderBy(i => Guid.NewGuid());
+ episodes = episodes.OrderBy(i => Guid.NewGuid()).ToList();
}
- var returnList = returnItems.ToList();
+ var returnItems = episodes;
- var pagedItems = ApplyPaging(returnList, request.StartIndex, request.Limit);
+ if (request.StartIndex.HasValue || request.Limit.HasValue)
+ {
+ returnItems = ApplyPaging(episodes, request.StartIndex, request.Limit).ToList();
+ }
- var returnDtos = (await _dtoService.GetBaseItemDtos(pagedItems, dtoOptions, user).ConfigureAwait(false));
- var dtos = returnDtos.ToArray(returnDtos.Count);
+ var dtos = (await _dtoService.GetBaseItemDtos(returnItems, dtoOptions, user).ConfigureAwait(false));
- return new ItemsResult
+ return new QueryResult<BaseItemDto>
{
- TotalRecordCount = returnList.Count,
+ TotalRecordCount = episodes.Count,
Items = dtos
};
}