aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/UserLibrary
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/UserLibrary')
-rw-r--r--MediaBrowser.Api/UserLibrary/ArtistsService.cs4
-rw-r--r--MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs7
-rw-r--r--MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs9
-rw-r--r--MediaBrowser.Api/UserLibrary/GameGenresService.cs6
-rw-r--r--MediaBrowser.Api/UserLibrary/GenresService.cs6
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemsService.cs29
-rw-r--r--MediaBrowser.Api/UserLibrary/MusicGenresService.cs4
-rw-r--r--MediaBrowser.Api/UserLibrary/PersonsService.cs4
-rw-r--r--MediaBrowser.Api/UserLibrary/PlaystateService.cs20
-rw-r--r--MediaBrowser.Api/UserLibrary/StudiosService.cs6
-rw-r--r--MediaBrowser.Api/UserLibrary/UserLibraryService.cs29
-rw-r--r--MediaBrowser.Api/UserLibrary/UserViewsService.cs2
12 files changed, 71 insertions, 55 deletions
diff --git a/MediaBrowser.Api/UserLibrary/ArtistsService.cs b/MediaBrowser.Api/UserLibrary/ArtistsService.cs
index 5bbd96c7c..7c1519e9f 100644
--- a/MediaBrowser.Api/UserLibrary/ArtistsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ArtistsService.cs
@@ -68,10 +68,10 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>Task{BaseItemDto}.</returns>
private BaseItemDto GetItem(GetArtist request)
{
- var item = GetArtist(request.Name, LibraryManager);
-
var dtoOptions = GetDtoOptions(AuthorizationContext, request);
+ var item = GetArtist(request.Name, LibraryManager, dtoOptions);
+
if (!string.IsNullOrWhiteSpace(request.UserId))
{
var user = UserManager.GetUserById(request.UserId);
diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
index c1cc1555d..24d0a7d52 100644
--- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
+++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
@@ -119,7 +119,6 @@ namespace MediaBrowser.Api.UserLibrary
NameLessThan = request.NameLessThan,
NameStartsWith = request.NameStartsWith,
NameStartsWithOrGreater = request.NameStartsWithOrGreater,
- AlbumArtistStartsWithOrGreater = request.AlbumArtistStartsWithOrGreater,
Tags = request.GetTags(),
OfficialRatings = request.GetOfficialRatings(),
Genres = request.GetGenres(),
@@ -129,7 +128,8 @@ namespace MediaBrowser.Api.UserLibrary
PersonIds = request.GetPersonIds(),
PersonTypes = request.GetPersonTypes(),
Years = request.GetYears(),
- MinCommunityRating = request.MinCommunityRating
+ MinCommunityRating = request.MinCommunityRating,
+ DtoOptions = dtoOptions
};
if (!string.IsNullOrWhiteSpace(request.ParentId))
@@ -266,7 +266,8 @@ namespace MediaBrowser.Api.UserLibrary
{
ExcludeItemTypes = excludeItemTypes,
IncludeItemTypes = includeItemTypes,
- MediaTypes = mediaTypes
+ MediaTypes = mediaTypes,
+ DtoOptions = dtoOptions
};
Func<BaseItem, bool> filter = i => FilterItem(request, i, excludeItemTypes, includeItemTypes, mediaTypes);
diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs b/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs
index 55c23841c..2de86f4da 100644
--- a/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs
+++ b/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs
@@ -85,6 +85,12 @@ namespace MediaBrowser.Api.UserLibrary
[ApiMember(Name = "MinPremiereDate", Description = "Optional. The minimum premiere date. Format = ISO", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
public string MinPremiereDate { get; set; }
+ [ApiMember(Name = "MinDateLastSaved", Description = "Optional. The minimum premiere date. Format = ISO", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
+ public string MinDateLastSaved { get; set; }
+
+ [ApiMember(Name = "MinDateLastSavedForUser", Description = "Optional. The minimum premiere date. Format = ISO", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
+ public string MinDateLastSavedForUser { get; set; }
+
[ApiMember(Name = "MaxPremiereDate", Description = "Optional. The maximum premiere date. Format = ISO", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
public string MaxPremiereDate { get; set; }
@@ -348,9 +354,6 @@ namespace MediaBrowser.Api.UserLibrary
[ApiMember(Name = "NameLessThan", Description = "Optional filter by items whose name is equally or lesser than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string NameLessThan { get; set; }
- [ApiMember(Name = "AlbumArtistStartsWithOrGreater", Description = "Optional filter by items whose album artist is sorted equally or greater than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public string AlbumArtistStartsWithOrGreater { get; set; }
-
public string[] GetGenres()
{
return (Genres ?? string.Empty).Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
diff --git a/MediaBrowser.Api/UserLibrary/GameGenresService.cs b/MediaBrowser.Api/UserLibrary/GameGenresService.cs
index 2eef1ab2f..56730c1b2 100644
--- a/MediaBrowser.Api/UserLibrary/GameGenresService.cs
+++ b/MediaBrowser.Api/UserLibrary/GameGenresService.cs
@@ -56,10 +56,10 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>Task{BaseItemDto}.</returns>
private BaseItemDto GetItem(GetGameGenre request)
{
- var item = GetGameGenre(request.Name, LibraryManager);
-
var dtoOptions = GetDtoOptions(AuthorizationContext, request);
-
+
+ var item = GetGameGenre(request.Name, LibraryManager, dtoOptions);
+
if (!string.IsNullOrWhiteSpace(request.UserId))
{
var user = UserManager.GetUserById(request.UserId);
diff --git a/MediaBrowser.Api/UserLibrary/GenresService.cs b/MediaBrowser.Api/UserLibrary/GenresService.cs
index 664efac14..fc387e5e3 100644
--- a/MediaBrowser.Api/UserLibrary/GenresService.cs
+++ b/MediaBrowser.Api/UserLibrary/GenresService.cs
@@ -66,10 +66,10 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>Task{BaseItemDto}.</returns>
private BaseItemDto GetItem(GetGenre request)
{
- var item = GetGenre(request.Name, LibraryManager);
-
- var dtoOptions = GetDtoOptions(AuthorizationContext ,request);
+ var dtoOptions = GetDtoOptions(AuthorizationContext, request);
+ var item = GetGenre(request.Name, LibraryManager, dtoOptions);
+
if (!string.IsNullOrWhiteSpace(request.UserId))
{
var user = UserManager.GetUserById(request.UserId);
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs
index f8580d328..01e1ce769 100644
--- a/MediaBrowser.Api/UserLibrary/ItemsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs
@@ -105,7 +105,7 @@ namespace MediaBrowser.Api.UserLibrary
var dtoOptions = GetDtoOptions(_authContext, request);
- var result = await GetQueryResult(request, dtoOptions, user).ConfigureAwait(false);
+ var result = GetQueryResult(request, dtoOptions, user);
if (result == null)
{
@@ -134,7 +134,7 @@ namespace MediaBrowser.Api.UserLibrary
/// <summary>
/// Gets the items to serialize.
/// </summary>
- private async Task<QueryResult<BaseItem>> GetQueryResult(GetItems request, DtoOptions dtoOptions, User user)
+ private QueryResult<BaseItem> GetQueryResult(GetItems request, DtoOptions dtoOptions, User user)
{
var item = string.IsNullOrEmpty(request.ParentId) ?
null :
@@ -169,14 +169,14 @@ namespace MediaBrowser.Api.UserLibrary
if (request.Recursive || !string.IsNullOrEmpty(request.Ids) || user == null)
{
- return await folder.GetItems(GetItemsQuery(request, dtoOptions, user)).ConfigureAwait(false);
+ return folder.GetItems(GetItemsQuery(request, dtoOptions, user));
}
var userRoot = item as UserRootFolder;
if (userRoot == null)
{
- return await folder.GetItems(GetItemsQuery(request, dtoOptions, user)).ConfigureAwait(false);
+ return folder.GetItems(GetItemsQuery(request, dtoOptions, user));
}
IEnumerable<BaseItem> items = folder.GetChildren(user, true);
@@ -249,7 +249,6 @@ namespace MediaBrowser.Api.UserLibrary
ParentId = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId),
ParentIndexNumber = request.ParentIndexNumber,
AiredDuringSeason = request.AiredDuringSeason,
- AlbumArtistStartsWithOrGreater = request.AlbumArtistStartsWithOrGreater,
EnableTotalRecordCount = request.EnableTotalRecordCount,
ExcludeItemIds = request.GetExcludeItemIds(),
DtoOptions = dtoOptions
@@ -294,6 +293,16 @@ namespace MediaBrowser.Api.UserLibrary
}
}
+ if (!string.IsNullOrEmpty(request.MinDateLastSaved))
+ {
+ query.MinDateLastSaved = DateTime.Parse(request.MinDateLastSaved, null, DateTimeStyles.RoundtripKind).ToUniversalTime();
+ }
+
+ if (!string.IsNullOrEmpty(request.MinDateLastSavedForUser))
+ {
+ query.MinDateLastSavedForUser = DateTime.Parse(request.MinDateLastSavedForUser, null, DateTimeStyles.RoundtripKind).ToUniversalTime();
+ }
+
if (!string.IsNullOrEmpty(request.MinPremiereDate))
{
query.MinPremiereDate = DateTime.Parse(request.MinPremiereDate, null, DateTimeStyles.RoundtripKind).ToUniversalTime();
@@ -330,7 +339,7 @@ namespace MediaBrowser.Api.UserLibrary
{
var requestedLocationTypes =
request.LocationTypes.Split(',')
- .Select(d => (LocationType) Enum.Parse(typeof (LocationType), d, true))
+ .Select(d => (LocationType)Enum.Parse(typeof(LocationType), d, true))
.ToList();
if (requestedLocationTypes.Count > 0 && requestedLocationTypes.Count < 4)
@@ -358,7 +367,7 @@ namespace MediaBrowser.Api.UserLibrary
{
try
{
- return _libraryManager.GetArtist(i);
+ return _libraryManager.GetArtist(i, new DtoOptions(false));
}
catch
{
@@ -381,15 +390,15 @@ namespace MediaBrowser.Api.UserLibrary
// Albums
if (!string.IsNullOrEmpty(request.Albums))
{
- query.AlbumIds = request.Albums.Split('|').Select(i =>
+ query.AlbumIds = request.Albums.Split('|').SelectMany(i =>
{
- return _libraryManager.GetItemList(new InternalItemsQuery
+ return _libraryManager.GetItemIds(new InternalItemsQuery
{
IncludeItemTypes = new[] { typeof(MusicAlbum).Name },
Name = i,
Limit = 1
- }).Select(album => album.Id.ToString("N")).FirstOrDefault();
+ }).Select(albumId => albumId.ToString("N"));
}).ToArray();
}
diff --git a/MediaBrowser.Api/UserLibrary/MusicGenresService.cs b/MediaBrowser.Api/UserLibrary/MusicGenresService.cs
index 305c136df..d1d4aa634 100644
--- a/MediaBrowser.Api/UserLibrary/MusicGenresService.cs
+++ b/MediaBrowser.Api/UserLibrary/MusicGenresService.cs
@@ -57,10 +57,10 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>Task{BaseItemDto}.</returns>
private BaseItemDto GetItem(GetMusicGenre request)
{
- var item = GetMusicGenre(request.Name, LibraryManager);
-
var dtoOptions = GetDtoOptions(AuthorizationContext, request);
+ var item = GetMusicGenre(request.Name, LibraryManager, dtoOptions);
+
if (!string.IsNullOrWhiteSpace(request.UserId))
{
var user = UserManager.GetUserById(request.UserId);
diff --git a/MediaBrowser.Api/UserLibrary/PersonsService.cs b/MediaBrowser.Api/UserLibrary/PersonsService.cs
index dbce22578..21f416025 100644
--- a/MediaBrowser.Api/UserLibrary/PersonsService.cs
+++ b/MediaBrowser.Api/UserLibrary/PersonsService.cs
@@ -64,10 +64,10 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>Task{BaseItemDto}.</returns>
private BaseItemDto GetItem(GetPerson request)
{
- var item = GetPerson(request.Name, LibraryManager);
-
var dtoOptions = GetDtoOptions(AuthorizationContext, request);
+ var item = GetPerson(request.Name, LibraryManager, dtoOptions);
+
if (!string.IsNullOrWhiteSpace(request.UserId))
{
var user = UserManager.GetUserById(request.UserId);
diff --git a/MediaBrowser.Api/UserLibrary/PlaystateService.cs b/MediaBrowser.Api/UserLibrary/PlaystateService.cs
index c4cc90955..98b4a5d5d 100644
--- a/MediaBrowser.Api/UserLibrary/PlaystateService.cs
+++ b/MediaBrowser.Api/UserLibrary/PlaystateService.cs
@@ -279,6 +279,20 @@ namespace MediaBrowser.Api.UserLibrary
return dto;
}
+ private PlayMethod ValidatePlayMethod(PlayMethod method, string playSessionId)
+ {
+ if (method == PlayMethod.Transcode)
+ {
+ var job = string.IsNullOrWhiteSpace(playSessionId) ? null : ApiEntryPoint.Instance.GetTranscodingJob(playSessionId);
+ if (job == null)
+ {
+ return PlayMethod.DirectPlay;
+ }
+ }
+
+ return method;
+ }
+
/// <summary>
/// Posts the specified request.
/// </summary>
@@ -300,6 +314,8 @@ namespace MediaBrowser.Api.UserLibrary
public void Post(ReportPlaybackStart request)
{
+ request.PlayMethod = ValidatePlayMethod(request.PlayMethod, request.PlaySessionId);
+
request.SessionId = GetSession(_sessionContext).Result.Id;
var task = _sessionManager.OnPlaybackStart(request);
@@ -332,6 +348,8 @@ namespace MediaBrowser.Api.UserLibrary
public void Post(ReportPlaybackProgress request)
{
+ request.PlayMethod = ValidatePlayMethod(request.PlayMethod, request.PlaySessionId);
+
request.SessionId = GetSession(_sessionContext).Result.Id;
var task = _sessionManager.OnPlaybackProgress(request);
@@ -427,7 +445,7 @@ namespace MediaBrowser.Api.UserLibrary
await item.MarkUnplayed(user).ConfigureAwait(false);
}
- return await _userDataRepository.GetUserDataDto(item, user).ConfigureAwait(false);
+ return _userDataRepository.GetUserDataDto(item, user);
}
}
} \ No newline at end of file
diff --git a/MediaBrowser.Api/UserLibrary/StudiosService.cs b/MediaBrowser.Api/UserLibrary/StudiosService.cs
index f4debcf48..7ac1264e8 100644
--- a/MediaBrowser.Api/UserLibrary/StudiosService.cs
+++ b/MediaBrowser.Api/UserLibrary/StudiosService.cs
@@ -66,10 +66,10 @@ namespace MediaBrowser.Api.UserLibrary
/// <returns>Task{BaseItemDto}.</returns>
private BaseItemDto GetItem(GetStudio request)
{
- var item = GetStudio(request.Name, LibraryManager);
-
var dtoOptions = GetDtoOptions(AuthorizationContext, request);
-
+
+ var item = GetStudio(request.Name, LibraryManager, dtoOptions);
+
if (!string.IsNullOrWhiteSpace(request.UserId))
{
var user = UserManager.GetUserById(request.UserId);
diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
index b1f196f15..3b638208b 100644
--- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
+++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
@@ -11,7 +11,6 @@ using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Common.IO;
using MediaBrowser.Controller.Entities.Audio;
using MediaBrowser.Controller.IO;
using MediaBrowser.Model.IO;
@@ -308,6 +307,8 @@ namespace MediaBrowser.Api.UserLibrary
}
}
+ var dtoOptions = GetDtoOptions(_authContext, request);
+
var list = _userViewManager.GetLatestItems(new LatestItemsQuery
{
GroupItems = request.GroupItems,
@@ -315,10 +316,8 @@ namespace MediaBrowser.Api.UserLibrary
IsPlayed = request.IsPlayed,
Limit = request.Limit,
ParentId = request.ParentId,
- UserId = request.UserId
- });
-
- var dtoOptions = GetDtoOptions(_authContext, request);
+ UserId = request.UserId,
+ }, dtoOptions);
var dtos = list.Select(i =>
{
@@ -360,22 +359,8 @@ namespace MediaBrowser.Api.UserLibrary
var currentUser = user;
var dtos = series
- .GetEpisodes(user)
+ .GetEpisodes(user, dtoOptions)
.Where(i => i.ParentIndexNumber.HasValue && i.ParentIndexNumber.Value == 0)
- .OrderBy(i =>
- {
- if (i.PremiereDate.HasValue)
- {
- return i.PremiereDate.Value;
- }
-
- if (i.ProductionYear.HasValue)
- {
- return new DateTime(i.ProductionYear.Value, 1, 1, 0, 0, 0, DateTimeKind.Utc);
- }
- return DateTime.MinValue;
- })
- .ThenBy(i => i.SortName)
.Select(i => _dtoService.GetBaseItemDto(i, dtoOptions, currentUser));
return dtos.ToList();
@@ -556,7 +541,7 @@ namespace MediaBrowser.Api.UserLibrary
await _userDataRepository.SaveUserData(user.Id, item, data, UserDataSaveReason.UpdateUserRating, CancellationToken.None).ConfigureAwait(false);
- return await _userDataRepository.GetUserDataDto(item, user).ConfigureAwait(false);
+ return _userDataRepository.GetUserDataDto(item, user);
}
/// <summary>
@@ -601,7 +586,7 @@ namespace MediaBrowser.Api.UserLibrary
await _userDataRepository.SaveUserData(user.Id, item, data, UserDataSaveReason.UpdateUserRating, CancellationToken.None).ConfigureAwait(false);
- return await _userDataRepository.GetUserDataDto(item, user).ConfigureAwait(false);
+ return _userDataRepository.GetUserDataDto(item, user);
}
}
}
diff --git a/MediaBrowser.Api/UserLibrary/UserViewsService.cs b/MediaBrowser.Api/UserLibrary/UserViewsService.cs
index 89953c2bd..3ed5166a4 100644
--- a/MediaBrowser.Api/UserLibrary/UserViewsService.cs
+++ b/MediaBrowser.Api/UserLibrary/UserViewsService.cs
@@ -103,7 +103,7 @@ namespace MediaBrowser.Api.UserLibrary
return ToOptimizedResult(result);
}
- public async Task<object> Get(GetGroupingOptions request)
+ public object Get(GetGroupingOptions request)
{
var user = _userManager.GetUserById(request.UserId);