aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api')
-rw-r--r--MediaBrowser.Api/ApiEntryPoint.cs2
-rw-r--r--MediaBrowser.Api/BaseApiService.cs12
-rw-r--r--MediaBrowser.Api/BrandingService.cs3
-rw-r--r--MediaBrowser.Api/DisplayPreferencesService.cs4
-rw-r--r--MediaBrowser.Api/GamesService.cs6
-rw-r--r--MediaBrowser.Api/Images/ImageService.cs12
-rw-r--r--MediaBrowser.Api/ItemUpdateService.cs2
-rw-r--r--MediaBrowser.Api/Library/LibraryService.cs28
-rw-r--r--MediaBrowser.Api/LiveTv/LiveTvService.cs14
-rw-r--r--MediaBrowser.Api/Movies/CollectionService.cs16
-rw-r--r--MediaBrowser.Api/Movies/MoviesService.cs8
-rw-r--r--MediaBrowser.Api/Movies/TrailersService.cs4
-rw-r--r--MediaBrowser.Api/Music/InstantMixService.cs14
-rw-r--r--MediaBrowser.Api/Playback/BaseStreamingService.cs56
-rw-r--r--MediaBrowser.Api/Playback/Dash/MpegDashService.cs6
-rw-r--r--MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs52
-rw-r--r--MediaBrowser.Api/Playback/Hls/VideoHlsService.cs6
-rw-r--r--MediaBrowser.Api/Playback/MediaInfoService.cs2
-rw-r--r--MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs5
-rw-r--r--MediaBrowser.Api/Playback/Progressive/VideoService.cs6
-rw-r--r--MediaBrowser.Api/PluginService.cs12
-rw-r--r--MediaBrowser.Api/Reports/ReportRequests.cs9
-rw-r--r--MediaBrowser.Api/Reports/ReportsService.cs2
-rw-r--r--MediaBrowser.Api/Session/SessionsService.cs12
-rw-r--r--MediaBrowser.Api/SimilarItemsHelper.cs6
-rw-r--r--MediaBrowser.Api/TvShowsService.cs10
-rw-r--r--MediaBrowser.Api/UserLibrary/ArtistsService.cs6
-rw-r--r--MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs8
-rw-r--r--MediaBrowser.Api/UserLibrary/GameGenresService.cs6
-rw-r--r--MediaBrowser.Api/UserLibrary/GenresService.cs6
-rw-r--r--MediaBrowser.Api/UserLibrary/ItemsService.cs4
-rw-r--r--MediaBrowser.Api/UserLibrary/MusicGenresService.cs6
-rw-r--r--MediaBrowser.Api/UserLibrary/PersonsService.cs6
-rw-r--r--MediaBrowser.Api/UserLibrary/PlaystateService.cs10
-rw-r--r--MediaBrowser.Api/UserLibrary/StudiosService.cs6
-rw-r--r--MediaBrowser.Api/UserLibrary/UserLibraryService.cs24
-rw-r--r--MediaBrowser.Api/UserLibrary/YearsService.cs6
-rw-r--r--MediaBrowser.Api/VideosService.cs6
38 files changed, 226 insertions, 177 deletions
diff --git a/MediaBrowser.Api/ApiEntryPoint.cs b/MediaBrowser.Api/ApiEntryPoint.cs
index db3dbf048..68087309b 100644
--- a/MediaBrowser.Api/ApiEntryPoint.cs
+++ b/MediaBrowser.Api/ApiEntryPoint.cs
@@ -340,7 +340,7 @@ namespace MediaBrowser.Api
// We can really reduce the timeout for apps that are using the newer api
if (!string.IsNullOrWhiteSpace(job.PlaySessionId))
{
- timerDuration = 60000;
+ timerDuration = 120000;
}
}
diff --git a/MediaBrowser.Api/BaseApiService.cs b/MediaBrowser.Api/BaseApiService.cs
index 66b2a314e..d4b5be584 100644
--- a/MediaBrowser.Api/BaseApiService.cs
+++ b/MediaBrowser.Api/BaseApiService.cs
@@ -198,15 +198,15 @@ namespace MediaBrowser.Api
return libraryManager.GetPerson(DeSlugPersonName(name, libraryManager));
}
- protected IList<BaseItem> GetAllLibraryItems(Guid? userId, IUserManager userManager, ILibraryManager libraryManager, string parentId, Func<BaseItem,bool> filter)
+ protected IList<BaseItem> GetAllLibraryItems(string userId, IUserManager userManager, ILibraryManager libraryManager, string parentId, Func<BaseItem,bool> filter)
{
if (!string.IsNullOrEmpty(parentId))
{
var folder = (Folder)libraryManager.GetItemById(new Guid(parentId));
- if (userId.HasValue)
+ if (!string.IsNullOrWhiteSpace(userId))
{
- var user = userManager.GetUserById(userId.Value);
+ var user = userManager.GetUserById(userId);
if (user == null)
{
@@ -221,9 +221,9 @@ namespace MediaBrowser.Api
return folder
.GetRecursiveChildren(filter);
}
- if (userId.HasValue)
+ if (!string.IsNullOrWhiteSpace(userId))
{
- var user = userManager.GetUserById(userId.Value);
+ var user = userManager.GetUserById(userId);
if (user == null)
{
@@ -231,7 +231,7 @@ namespace MediaBrowser.Api
}
return userManager
- .GetUserById(userId.Value)
+ .GetUserById(userId)
.RootFolder
.GetRecursiveChildren(user, filter)
.ToList();
diff --git a/MediaBrowser.Api/BrandingService.cs b/MediaBrowser.Api/BrandingService.cs
index ac491a997..c900e4d06 100644
--- a/MediaBrowser.Api/BrandingService.cs
+++ b/MediaBrowser.Api/BrandingService.cs
@@ -34,7 +34,8 @@ namespace MediaBrowser.Api
{
var result = _config.GetConfiguration<BrandingOptions>("branding");
- return ResultFactory.GetResult(result.CustomCss, "text/css");
+ // When null this throws a 405 error under Mono OSX, so default to empty string
+ return ResultFactory.GetResult(result.CustomCss ?? string.Empty, "text/css");
}
}
}
diff --git a/MediaBrowser.Api/DisplayPreferencesService.cs b/MediaBrowser.Api/DisplayPreferencesService.cs
index 72b12020d..df04de79e 100644
--- a/MediaBrowser.Api/DisplayPreferencesService.cs
+++ b/MediaBrowser.Api/DisplayPreferencesService.cs
@@ -23,7 +23,7 @@ namespace MediaBrowser.Api
public string DisplayPreferencesId { get; set; }
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "POST")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
}
[Route("/DisplayPreferences/{Id}", "GET", Summary = "Gets a user's display preferences for an item")]
@@ -37,7 +37,7 @@ namespace MediaBrowser.Api
public string Id { get; set; }
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
[ApiMember(Name = "Client", Description = "Client", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
public string Client { get; set; }
diff --git a/MediaBrowser.Api/GamesService.cs b/MediaBrowser.Api/GamesService.cs
index c18c32920..93cc01079 100644
--- a/MediaBrowser.Api/GamesService.cs
+++ b/MediaBrowser.Api/GamesService.cs
@@ -32,7 +32,7 @@ namespace MediaBrowser.Api
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
}
/// <summary>
@@ -46,7 +46,7 @@ namespace MediaBrowser.Api
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
}
/// <summary>
@@ -106,7 +106,7 @@ namespace MediaBrowser.Api
.Cast<GameSystem>()
.ToList();
- var user = request.UserId == null ? null : _userManager.GetUserById(request.UserId.Value);
+ var user = request.UserId == null ? null : _userManager.GetUserById(request.UserId);
var result = gameSystems
.Select(i => GetSummary(i, user))
diff --git a/MediaBrowser.Api/Images/ImageService.cs b/MediaBrowser.Api/Images/ImageService.cs
index 8c6cc0a18..b8ea62137 100644
--- a/MediaBrowser.Api/Images/ImageService.cs
+++ b/MediaBrowser.Api/Images/ImageService.cs
@@ -675,10 +675,18 @@ namespace MediaBrowser.Api.Images
private ImageFormat[] GetClientSupportedFormats()
{
- if ((Request.AcceptTypes ?? new string[] { }).Contains("image/webp", StringComparer.OrdinalIgnoreCase))
+ var supportsWebP = (Request.AcceptTypes ?? new string[] {}).Contains("image/webp", StringComparer.OrdinalIgnoreCase);
+
+ var userAgent = Request.UserAgent ?? string.Empty;
+
+ if (userAgent.IndexOf("crosswalk", StringComparison.OrdinalIgnoreCase) != -1 &&
+ userAgent.IndexOf("android", StringComparison.OrdinalIgnoreCase) != -1)
{
- var userAgent = Request.UserAgent ?? string.Empty;
+ supportsWebP = true;
+ }
+ if (supportsWebP)
+ {
// Not displaying properly on iOS
if (userAgent.IndexOf("cfnetwork", StringComparison.OrdinalIgnoreCase) == -1)
{
diff --git a/MediaBrowser.Api/ItemUpdateService.cs b/MediaBrowser.Api/ItemUpdateService.cs
index bab02de35..8f7edabbb 100644
--- a/MediaBrowser.Api/ItemUpdateService.cs
+++ b/MediaBrowser.Api/ItemUpdateService.cs
@@ -428,7 +428,7 @@ namespace MediaBrowser.Api
var series = item as Series;
if (series != null)
{
- series.Status = request.Status;
+ series.Status = request.SeriesStatus;
series.AirDays = request.AirDays;
series.AirTime = request.AirTime;
diff --git a/MediaBrowser.Api/Library/LibraryService.cs b/MediaBrowser.Api/Library/LibraryService.cs
index 269f4cb20..e8340a1cb 100644
--- a/MediaBrowser.Api/Library/LibraryService.cs
+++ b/MediaBrowser.Api/Library/LibraryService.cs
@@ -77,7 +77,7 @@ namespace MediaBrowser.Api.Library
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Gets or sets the id.
@@ -102,7 +102,7 @@ namespace MediaBrowser.Api.Library
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Gets or sets the id.
@@ -127,7 +127,7 @@ namespace MediaBrowser.Api.Library
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Gets or sets the id.
@@ -159,7 +159,7 @@ namespace MediaBrowser.Api.Library
public class GetItemCounts : IReturn<ItemCounts>
{
[ApiMember(Name = "UserId", Description = "Optional. Get counts from a specific user's library.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
[ApiMember(Name = "IsFavorite", Description = "Optional. Get counts of favorite items", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool? IsFavorite { get; set; }
@@ -174,7 +174,7 @@ namespace MediaBrowser.Api.Library
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Gets or sets the id.
@@ -193,7 +193,7 @@ namespace MediaBrowser.Api.Library
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
[ApiMember(Name = "IncludeItemTypes", Description = "Optional. If specified, results will be filtered based on item type. This allows multiple, comma delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string IncludeItemTypes { get; set; }
@@ -412,7 +412,7 @@ namespace MediaBrowser.Api.Library
var baseItemDtos = new List<BaseItemDto>();
- var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null;
+ var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null;
var dtoOptions = GetDtoOptions(request);
@@ -483,15 +483,15 @@ namespace MediaBrowser.Api.Library
return ToOptimizedSerializedResultUsingCache(counts);
}
- private bool FilterItem(BaseItem item, GetItemCounts request, Guid? userId)
+ private bool FilterItem(BaseItem item, GetItemCounts request, string userId)
{
- if (userId.HasValue)
+ if (!string.IsNullOrWhiteSpace(userId))
{
if (request.IsFavorite.HasValue)
{
var val = request.IsFavorite.Value;
- if (_userDataManager.GetUserData(userId.Value, item.GetUserDataKey()).IsFavorite != val)
+ if (_userDataManager.GetUserData(userId, item.GetUserDataKey()).IsFavorite != val)
{
return false;
}
@@ -609,10 +609,10 @@ namespace MediaBrowser.Api.Library
private ThemeMediaResult GetThemeSongs(GetThemeSongs request)
{
- var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null;
+ var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null;
var item = string.IsNullOrEmpty(request.Id)
- ? (request.UserId.HasValue
+ ? (!string.IsNullOrWhiteSpace(request.UserId)
? user.RootFolder
: (Folder)_libraryManager.RootFolder)
: _libraryManager.GetItemById(request.Id);
@@ -652,10 +652,10 @@ namespace MediaBrowser.Api.Library
public ThemeMediaResult GetThemeVideos(GetThemeVideos request)
{
- var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null;
+ var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null;
var item = string.IsNullOrEmpty(request.Id)
- ? (request.UserId.HasValue
+ ? (!string.IsNullOrWhiteSpace(request.UserId)
? user.RootFolder
: (Folder)_libraryManager.RootFolder)
: _libraryManager.GetItemById(request.Id);
diff --git a/MediaBrowser.Api/LiveTv/LiveTvService.cs b/MediaBrowser.Api/LiveTv/LiveTvService.cs
index b8b74369c..c474642d5 100644
--- a/MediaBrowser.Api/LiveTv/LiveTvService.cs
+++ b/MediaBrowser.Api/LiveTv/LiveTvService.cs
@@ -78,7 +78,7 @@ namespace MediaBrowser.Api.LiveTv
[Route("/LiveTv/Recordings", "GET", Summary = "Gets live tv recordings")]
[Authenticated]
- public class GetRecordings : IReturn<QueryResult<RecordingInfoDto>>
+ public class GetRecordings : IReturn<QueryResult<BaseItemDto>>
{
[ApiMember(Name = "ChannelId", Description = "Optional filter by channel id.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string ChannelId { get; set; }
@@ -107,7 +107,7 @@ namespace MediaBrowser.Api.LiveTv
[Route("/LiveTv/Recordings/Groups", "GET", Summary = "Gets live tv recording groups")]
[Authenticated]
- public class GetRecordingGroups : IReturn<QueryResult<RecordingGroupDto>>
+ public class GetRecordingGroups : IReturn<QueryResult<BaseItemDto>>
{
[ApiMember(Name = "UserId", Description = "Optional filter by user and attach user data.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string UserId { get; set; }
@@ -115,7 +115,7 @@ namespace MediaBrowser.Api.LiveTv
[Route("/LiveTv/Recordings/{Id}", "GET", Summary = "Gets a live tv recording")]
[Authenticated]
- public class GetRecording : IReturn<RecordingInfoDto>
+ public class GetRecording : IReturn<BaseItemDto>
{
[ApiMember(Name = "Id", Description = "Recording Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
public string Id { get; set; }
@@ -161,7 +161,7 @@ namespace MediaBrowser.Api.LiveTv
[Route("/LiveTv/Programs", "GET,POST", Summary = "Gets available live tv epgs..")]
[Authenticated]
- public class GetPrograms : IReturn<QueryResult<ProgramInfoDto>>
+ public class GetPrograms : IReturn<QueryResult<BaseItemDto>>
{
[ApiMember(Name = "ChannelIds", Description = "The channels to return guide information for.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET,POST")]
public string ChannelIds { get; set; }
@@ -208,7 +208,7 @@ namespace MediaBrowser.Api.LiveTv
[Route("/LiveTv/Programs/Recommended", "GET", Summary = "Gets available live tv epgs..")]
[Authenticated]
- public class GetRecommendedPrograms : IReturn<QueryResult<ProgramInfoDto>>
+ public class GetRecommendedPrograms : IReturn<QueryResult<BaseItemDto>>
{
[ApiMember(Name = "UserId", Description = "Optional filter by user id.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET,POST")]
public string UserId { get; set; }
@@ -231,7 +231,7 @@ namespace MediaBrowser.Api.LiveTv
[Route("/LiveTv/Programs/{Id}", "GET", Summary = "Gets a live tv program")]
[Authenticated]
- public class GetProgram : IReturn<ProgramInfoDto>
+ public class GetProgram : IReturn<BaseItemDto>
{
[ApiMember(Name = "Id", Description = "Program Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
public string Id { get; set; }
@@ -310,7 +310,7 @@ namespace MediaBrowser.Api.LiveTv
[Route("/LiveTv/Recordings/Groups/{Id}", "GET", Summary = "Gets a recording group")]
[Authenticated]
- public class GetRecordingGroup : IReturn<RecordingGroupDto>
+ public class GetRecordingGroup : IReturn<BaseItemDto>
{
[ApiMember(Name = "Id", Description = "Recording group Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
public string Id { get; set; }
diff --git a/MediaBrowser.Api/Movies/CollectionService.cs b/MediaBrowser.Api/Movies/CollectionService.cs
index ec3265b56..e8c33abc6 100644
--- a/MediaBrowser.Api/Movies/CollectionService.cs
+++ b/MediaBrowser.Api/Movies/CollectionService.cs
@@ -2,8 +2,6 @@
using MediaBrowser.Controller.Dto;
using MediaBrowser.Controller.Net;
using MediaBrowser.Model.Collections;
-using MediaBrowser.Model.Dto;
-using MediaBrowser.Model.Querying;
using ServiceStack;
using System;
using System.Collections.Generic;
@@ -22,7 +20,7 @@ namespace MediaBrowser.Api.Movies
public string Name { get; set; }
[ApiMember(Name = "ParentId", Description = "Optional - create the collection within a specific folder", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
- public Guid? ParentId { get; set; }
+ public string ParentId { get; set; }
[ApiMember(Name = "Ids", Description = "Item Ids to add to the collection", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST", AllowMultiple = true)]
public string Ids { get; set; }
@@ -35,7 +33,7 @@ namespace MediaBrowser.Api.Movies
public string Ids { get; set; }
[ApiMember(Name = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public Guid Id { get; set; }
+ public string Id { get; set; }
}
[Route("/Collections/{Id}/Items", "DELETE", Summary = "Removes items from a collection")]
@@ -45,7 +43,7 @@ namespace MediaBrowser.Api.Movies
public string Ids { get; set; }
[ApiMember(Name = "Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")]
- public Guid Id { get; set; }
+ public string Id { get; set; }
}
[Authenticated]
@@ -64,11 +62,13 @@ namespace MediaBrowser.Api.Movies
{
var userId = AuthorizationContext.GetAuthorizationInfo(Request).UserId;
+ var parentId = string.IsNullOrWhiteSpace(request.ParentId) ? (Guid?)null : new Guid(request.ParentId);
+
var item = await _collectionManager.CreateCollection(new CollectionCreationOptions
{
IsLocked = request.IsLocked,
Name = request.Name,
- ParentId = request.ParentId,
+ ParentId = parentId,
ItemIdList = (request.Ids ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).Select(i => new Guid(i)).ToList(),
UserIds = new List<Guid> { new Guid(userId) }
@@ -86,14 +86,14 @@ namespace MediaBrowser.Api.Movies
public void Post(AddToCollection request)
{
- var task = _collectionManager.AddToCollection(request.Id, request.Ids.Split(',').Select(i => new Guid(i)));
+ var task = _collectionManager.AddToCollection(new Guid(request.Id), request.Ids.Split(',').Select(i => new Guid(i)));
Task.WaitAll(task);
}
public void Delete(RemoveFromCollection request)
{
- var task = _collectionManager.RemoveFromCollection(request.Id, request.Ids.Split(',').Select(i => new Guid(i)));
+ var task = _collectionManager.RemoveFromCollection(new Guid(request.Id), request.Ids.Split(',').Select(i => new Guid(i)));
Task.WaitAll(task);
}
diff --git a/MediaBrowser.Api/Movies/MoviesService.cs b/MediaBrowser.Api/Movies/MoviesService.cs
index 1a7f6d8f4..513bde871 100644
--- a/MediaBrowser.Api/Movies/MoviesService.cs
+++ b/MediaBrowser.Api/Movies/MoviesService.cs
@@ -42,7 +42,7 @@ namespace MediaBrowser.Api.Movies
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Specify this to localize the search to a specific item or folder. Omit to use the root.
@@ -119,7 +119,7 @@ namespace MediaBrowser.Api.Movies
public async Task<object> Get(GetMovieRecommendations request)
{
- var user = _userManager.GetUserById(request.UserId.Value);
+ var user = _userManager.GetUserById(request.UserId);
IEnumerable<BaseItem> movies = GetAllLibraryItems(request.UserId, _userManager, _libraryManager, request.ParentId, i => i is Movie);
@@ -167,10 +167,10 @@ namespace MediaBrowser.Api.Movies
private async Task<ItemsResult> GetSimilarItemsResult(BaseGetSimilarItemsFromItem request, Func<BaseItem, bool> includeInSearch, Func<BaseItem, BaseItem, int> getSimilarityScore)
{
- var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null;
+ var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null;
var item = string.IsNullOrEmpty(request.Id) ?
- (request.UserId.HasValue ? user.RootFolder :
+ (!string.IsNullOrWhiteSpace(request.UserId) ? user.RootFolder :
_libraryManager.RootFolder) : _libraryManager.GetItemById(request.Id);
Func<BaseItem, bool> filter = i => i.Id != item.Id && includeInSearch(i);
diff --git a/MediaBrowser.Api/Movies/TrailersService.cs b/MediaBrowser.Api/Movies/TrailersService.cs
index 3bee59a86..c807bfde6 100644
--- a/MediaBrowser.Api/Movies/TrailersService.cs
+++ b/MediaBrowser.Api/Movies/TrailersService.cs
@@ -34,7 +34,7 @@ namespace MediaBrowser.Api.Movies
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
}
/// <summary>
@@ -103,7 +103,7 @@ namespace MediaBrowser.Api.Movies
public async Task<object> Get(Getrailers request)
{
- var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null;
+ var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null;
var result = await GetAllTrailers(user).ConfigureAwait(false);
IEnumerable<BaseItem> items = result.Items;
diff --git a/MediaBrowser.Api/Music/InstantMixService.cs b/MediaBrowser.Api/Music/InstantMixService.cs
index 46034dc61..506b7bc3a 100644
--- a/MediaBrowser.Api/Music/InstantMixService.cs
+++ b/MediaBrowser.Api/Music/InstantMixService.cs
@@ -75,7 +75,7 @@ namespace MediaBrowser.Api.Music
{
var item = _libraryManager.GetItemById(request.Id);
- var user = _userManager.GetUserById(request.UserId.Value);
+ var user = _userManager.GetUserById(request.UserId);
var items = _musicManager.GetInstantMixFromItem(item, user);
@@ -86,7 +86,7 @@ namespace MediaBrowser.Api.Music
{
var item = _libraryManager.GetItemById(request.Id);
- var user = _userManager.GetUserById(request.UserId.Value);
+ var user = _userManager.GetUserById(request.UserId);
var items = _musicManager.GetInstantMixFromItem(item, user);
@@ -97,7 +97,7 @@ namespace MediaBrowser.Api.Music
{
var item = _libraryManager.GetItemById(request.Id);
- var user = _userManager.GetUserById(request.UserId.Value);
+ var user = _userManager.GetUserById(request.UserId);
var items = _musicManager.GetInstantMixFromItem(item, user);
@@ -108,7 +108,7 @@ namespace MediaBrowser.Api.Music
{
var album = _libraryManager.GetItemById(request.Id);
- var user = _userManager.GetUserById(request.UserId.Value);
+ var user = _userManager.GetUserById(request.UserId);
var items = _musicManager.GetInstantMixFromItem(album, user);
@@ -119,7 +119,7 @@ namespace MediaBrowser.Api.Music
{
var playlist = (Playlist)_libraryManager.GetItemById(request.Id);
- var user = _userManager.GetUserById(request.UserId.Value);
+ var user = _userManager.GetUserById(request.UserId);
var items = _musicManager.GetInstantMixFromItem(playlist, user);
@@ -128,7 +128,7 @@ namespace MediaBrowser.Api.Music
public object Get(GetInstantMixFromMusicGenre request)
{
- var user = _userManager.GetUserById(request.UserId.Value);
+ var user = _userManager.GetUserById(request.UserId);
var items = _musicManager.GetInstantMixFromGenres(new[] { request.Name }, user);
@@ -137,7 +137,7 @@ namespace MediaBrowser.Api.Music
public object Get(GetInstantMixFromArtist request)
{
- var user = _userManager.GetUserById(request.UserId.Value);
+ var user = _userManager.GetUserById(request.UserId);
var items = _musicManager.GetInstantMixFromArtist(request.Name, user);
diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs
index 31679aad3..41d785a34 100644
--- a/MediaBrowser.Api/Playback/BaseStreamingService.cs
+++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs
@@ -8,12 +8,12 @@ using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Model.Configuration;
using MediaBrowser.Model.Dlna;
-using MediaBrowser.Model.Drawing;
using MediaBrowser.Model.Dto;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Extensions;
using MediaBrowser.Model.IO;
using MediaBrowser.Model.MediaInfo;
+using MediaBrowser.Model.Serialization;
using System;
using System.Collections.Generic;
using System.Diagnostics;
@@ -23,7 +23,6 @@ using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
-using MediaBrowser.Model.Serialization;
namespace MediaBrowser.Api.Playback
{
@@ -690,7 +689,7 @@ namespace MediaBrowser.Api.Playback
// TODO: Perhaps also use original_size=1920x800 ??
return string.Format("subtitles=filename='{0}'{1},setpts=PTS -{2}/TB",
- subtitlePath.Replace("'", "\\'").Replace('\\', '/').Replace(":/", "\\:/"),
+ subtitlePath.Replace('\\', '/').Replace("'", "\\'").Replace(":/", "\\:/"),
charsetParam,
seconds.ToString(UsCulture));
}
@@ -698,7 +697,7 @@ namespace MediaBrowser.Api.Playback
var mediaPath = state.MediaPath ?? string.Empty;
return string.Format("subtitles='{0}:si={1}',setpts=PTS -{2}/TB",
- mediaPath.Replace("'", "\\'").Replace('\\', '/').Replace(":/", "\\:/"),
+ mediaPath.Replace('\\', '/').Replace("'", "\\'").Replace(":/", "\\:/"),
state.InternalSubtitleStreamOffset.ToString(UsCulture),
seconds.ToString(UsCulture));
}
@@ -773,6 +772,11 @@ namespace MediaBrowser.Api.Playback
? null
: audioStream.Channels;
+ if (inputChannels <= 0)
+ {
+ inputChannels = null;
+ }
+
var codec = outputAudioCodec ?? string.Empty;
if (codec.IndexOf("wma", StringComparison.OrdinalIgnoreCase) != -1)
@@ -813,11 +817,11 @@ namespace MediaBrowser.Api.Playback
}
/// <summary>
- /// Gets the name of the output audio codec
+ /// Gets the audio encoder.
/// </summary>
/// <param name="request">The request.</param>
/// <returns>System.String.</returns>
- private string GetAudioCodec(StreamRequest request)
+ protected string GetAudioEncoder(StreamRequest request)
{
var codec = request.AudioCodec;
@@ -846,7 +850,7 @@ namespace MediaBrowser.Api.Playback
/// </summary>
/// <param name="request">The request.</param>
/// <returns>System.String.</returns>
- private string GetVideoCodec(VideoStreamRequest request)
+ protected string GetVideoEncoder(VideoStreamRequest request)
{
var codec = request.VideoCodec;
@@ -1665,13 +1669,13 @@ namespace MediaBrowser.Api.Playback
state.OutputAudioBitrate = GetAudioBitrateParam(state.Request, state.AudioStream);
state.OutputAudioSampleRate = request.AudioSampleRate;
- state.OutputAudioCodec = GetAudioCodec(state.Request);
+ state.OutputAudioCodec = state.Request.AudioCodec;
state.OutputAudioChannels = GetNumAudioChannelsParam(state.Request, state.AudioStream, state.OutputAudioCodec);
if (videoRequest != null)
{
- state.OutputVideoCodec = GetVideoCodec(videoRequest);
+ state.OutputVideoCodec = state.VideoRequest.VideoCodec;
state.OutputVideoBitrate = GetVideoBitrateParamValue(state.VideoRequest, state.VideoStream);
if (state.OutputVideoBitrate.HasValue)
@@ -1768,6 +1772,12 @@ namespace MediaBrowser.Api.Playback
state.InputAudioSync = "1";
}
+ if (string.Equals(mediaSource.Container, "wma", StringComparison.OrdinalIgnoreCase))
+ {
+ // Seeing some stuttering when transcoding wma to audio-only HLS
+ state.InputAudioSync = "1";
+ }
+
var mediaStreams = mediaSource.MediaStreams;
if (videoRequest != null)
@@ -2061,15 +2071,18 @@ namespace MediaBrowser.Api.Playback
state.MimeType = mediaProfile.MimeType;
}
- var transcodingProfile = state.VideoRequest == null ?
- profile.GetAudioTranscodingProfile(state.OutputContainer, audioCodec) :
- profile.GetVideoTranscodingProfile(state.OutputContainer, audioCodec, videoCodec);
-
- if (transcodingProfile != null)
+ if (!state.Request.Static)
{
- state.EstimateContentLength = transcodingProfile.EstimateContentLength;
- state.EnableMpegtsM2TsMode = transcodingProfile.EnableMpegtsM2TsMode;
- state.TranscodeSeekInfo = transcodingProfile.TranscodeSeekInfo;
+ var transcodingProfile = state.VideoRequest == null ?
+ profile.GetAudioTranscodingProfile(state.OutputContainer, audioCodec) :
+ profile.GetVideoTranscodingProfile(state.OutputContainer, audioCodec, videoCodec);
+
+ if (transcodingProfile != null)
+ {
+ state.EstimateContentLength = transcodingProfile.EstimateContentLength;
+ state.EnableMpegtsM2TsMode = transcodingProfile.EnableMpegtsM2TsMode;
+ state.TranscodeSeekInfo = transcodingProfile.TranscodeSeekInfo;
+ }
}
}
@@ -2088,6 +2101,15 @@ namespace MediaBrowser.Api.Playback
responseHeaders["transferMode.dlna.org"] = string.IsNullOrEmpty(transferMode) ? "Streaming" : transferMode;
responseHeaders["realTimeInfo.dlna.org"] = "DLNA.ORG_TLAG=*";
+ if (string.Equals(GetHeader("getMediaInfo.sec"), "1", StringComparison.OrdinalIgnoreCase))
+ {
+ if (state.RunTimeTicks.HasValue)
+ {
+ var ms = TimeSpan.FromTicks(state.RunTimeTicks.Value).TotalMilliseconds;
+ responseHeaders["MediaInfo.sec"] = string.Format("SEC_Duration={0};", Convert.ToInt32(ms).ToString(CultureInfo.InvariantCulture));
+ }
+ }
+
if (state.RunTimeTicks.HasValue && !isStaticallyStreamed && profile != null)
{
AddTimeSeekResponseHeaders(state, responseHeaders);
diff --git a/MediaBrowser.Api/Playback/Dash/MpegDashService.cs b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs
index 1a90dbb53..47eb38b2d 100644
--- a/MediaBrowser.Api/Playback/Dash/MpegDashService.cs
+++ b/MediaBrowser.Api/Playback/Dash/MpegDashService.cs
@@ -378,9 +378,9 @@ namespace MediaBrowser.Api.Playback.Dash
protected override string GetAudioArguments(StreamState state)
{
- var codec = state.OutputAudioCodec;
+ var codec = GetAudioEncoder(state.Request);
- if (codec.Equals("copy", StringComparison.OrdinalIgnoreCase))
+ if (string.Equals(codec, "copy", StringComparison.OrdinalIgnoreCase))
{
return "-codec:a:0 copy";
}
@@ -408,7 +408,7 @@ namespace MediaBrowser.Api.Playback.Dash
protected override string GetVideoArguments(StreamState state)
{
- var codec = state.OutputVideoCodec;
+ var codec = GetVideoEncoder(state.VideoRequest);
var args = "-codec:v:0 " + codec;
diff --git a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
index 6ca5c57f3..ab57e561f 100644
--- a/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
+++ b/MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs
@@ -295,6 +295,10 @@ namespace MediaBrowser.Api.Playback.Hls
}
}
}
+ catch (DirectoryNotFoundException)
+ {
+
+ }
catch (FileNotFoundException)
{
@@ -446,22 +450,29 @@ namespace MediaBrowser.Api.Playback.Hls
while (!cancellationToken.IsCancellationRequested)
{
- using (var fileStream = GetPlaylistFileStream(playlistPath))
+ try
{
- using (var reader = new StreamReader(fileStream))
+ using (var fileStream = GetPlaylistFileStream(playlistPath))
{
- while (!reader.EndOfStream)
+ using (var reader = new StreamReader(fileStream))
{
- var text = await reader.ReadLineAsync().ConfigureAwait(false);
-
- // If it appears in the playlist, it's done
- if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1)
+ while (!reader.EndOfStream)
{
- return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob);
+ var text = await reader.ReadLineAsync().ConfigureAwait(false);
+
+ // If it appears in the playlist, it's done
+ if (text.IndexOf(segmentFilename, StringComparison.OrdinalIgnoreCase) != -1)
+ {
+ return GetSegmentResult(segmentPath, segmentIndex, segmentLength, transcodingJob);
+ }
}
}
}
}
+ catch (IOException)
+ {
+ // May get an error if the file is locked
+ }
await Task.Delay(100, cancellationToken).ConfigureAwait(false);
}
@@ -775,9 +786,19 @@ namespace MediaBrowser.Api.Playback.Hls
protected override string GetAudioArguments(StreamState state)
{
+ var codec = GetAudioEncoder(state.Request);
+
if (!state.IsOutputVideo)
{
+ if (string.Equals(codec, "copy", StringComparison.OrdinalIgnoreCase))
+ {
+ return "-acodec copy";
+ }
+
var audioTranscodeParams = new List<string>();
+
+ audioTranscodeParams.Add("-acodec " + codec);
+
if (state.OutputAudioBitrate.HasValue)
{
audioTranscodeParams.Add("-ab " + state.OutputAudioBitrate.Value.ToString(UsCulture));
@@ -797,8 +818,6 @@ namespace MediaBrowser.Api.Playback.Hls
return string.Join(" ", audioTranscodeParams.ToArray());
}
- var codec = state.OutputAudioCodec;
-
if (string.Equals(codec, "copy", StringComparison.OrdinalIgnoreCase))
{
return "-codec:a:0 copy";
@@ -832,7 +851,7 @@ namespace MediaBrowser.Api.Playback.Hls
return string.Empty;
}
- var codec = state.OutputVideoCodec;
+ var codec = GetVideoEncoder(state.VideoRequest);
var args = "-codec:v:0 " + codec;
@@ -879,7 +898,7 @@ namespace MediaBrowser.Api.Playback.Hls
if (!EnableSplitTranscoding(state))
{
- args += " -copyts";
+ //args += " -copyts";
}
return args;
@@ -910,11 +929,11 @@ namespace MediaBrowser.Api.Playback.Hls
//toTimeParam = " -to " + MediaEncoder.GetTimeParameter(endTime);
toTimeParam = " -t " + MediaEncoder.GetTimeParameter(TimeSpan.FromSeconds(durationSeconds).Ticks);
}
+ }
- if (state.IsOutputVideo && !string.Equals(state.OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase) && (state.Request.StartTimeTicks ?? 0) > 0)
- {
- timestampOffsetParam = " -output_ts_offset " + MediaEncoder.GetTimeParameter(state.Request.StartTimeTicks ?? 0).ToString(CultureInfo.InvariantCulture);
- }
+ if (state.IsOutputVideo && !string.Equals(state.OutputVideoCodec, "copy", StringComparison.OrdinalIgnoreCase) && (state.Request.StartTimeTicks ?? 0) > 0)
+ {
+ timestampOffsetParam = " -output_ts_offset " + MediaEncoder.GetTimeParameter(state.Request.StartTimeTicks ?? 0).ToString(CultureInfo.InvariantCulture);
}
var mapArgs = state.IsOutputVideo ? GetMapArgs(state) : string.Empty;
@@ -959,6 +978,7 @@ namespace MediaBrowser.Api.Playback.Hls
private bool EnableSplitTranscoding(StreamState state)
{
+ return false;
if (string.Equals(Request.QueryString["EnableSplitTranscoding"], "false", StringComparison.OrdinalIgnoreCase))
{
return false;
diff --git a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs
index f21be190f..d8e3423fc 100644
--- a/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs
+++ b/MediaBrowser.Api/Playback/Hls/VideoHlsService.cs
@@ -48,9 +48,9 @@ namespace MediaBrowser.Api.Playback.Hls
/// <returns>System.String.</returns>
protected override string GetAudioArguments(StreamState state)
{
- var codec = state.OutputAudioCodec;
+ var codec = GetAudioEncoder(state.Request);
- if (codec.Equals("copy", StringComparison.OrdinalIgnoreCase))
+ if (string.Equals(codec, "copy", StringComparison.OrdinalIgnoreCase))
{
return "-codec:a:0 copy";
}
@@ -83,7 +83,7 @@ namespace MediaBrowser.Api.Playback.Hls
/// <returns>System.String.</returns>
protected override string GetVideoArguments(StreamState state)
{
- var codec = state.OutputVideoCodec;
+ var codec = GetVideoEncoder(state.VideoRequest);
var args = "-codec:v:0 " + codec;
diff --git a/MediaBrowser.Api/Playback/MediaInfoService.cs b/MediaBrowser.Api/Playback/MediaInfoService.cs
index 72d4961cd..0b7b50134 100644
--- a/MediaBrowser.Api/Playback/MediaInfoService.cs
+++ b/MediaBrowser.Api/Playback/MediaInfoService.cs
@@ -46,7 +46,7 @@ namespace MediaBrowser.Api.Playback
}
[Route("/Playback/BitrateTest", "GET")]
- public class GetBitrateTestBytes : IReturn<PlaybackInfoResponse>
+ public class GetBitrateTestBytes
{
[ApiMember(Name = "Size", Description = "Size", IsRequired = true, DataType = "int", ParameterType = "query", Verb = "GET")]
public long Size { get; set; }
diff --git a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs
index 041b4ea41..910ac18e7 100644
--- a/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs
+++ b/MediaBrowser.Api/Playback/Progressive/BaseProgressiveStreamingService.cs
@@ -1,12 +1,10 @@
-using System.Globalization;
-using MediaBrowser.Common.IO;
+using MediaBrowser.Common.IO;
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Devices;
using MediaBrowser.Controller.Dlna;
using MediaBrowser.Controller.Drawing;
using MediaBrowser.Controller.Library;
-using MediaBrowser.Controller.LiveTv;
using MediaBrowser.Controller.MediaEncoding;
using MediaBrowser.Controller.Net;
using MediaBrowser.Model.IO;
@@ -15,6 +13,7 @@ using MediaBrowser.Model.Serialization;
using ServiceStack.Web;
using System;
using System.Collections.Generic;
+using System.Globalization;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
diff --git a/MediaBrowser.Api/Playback/Progressive/VideoService.cs b/MediaBrowser.Api/Playback/Progressive/VideoService.cs
index 283f9671f..ebd72b2ce 100644
--- a/MediaBrowser.Api/Playback/Progressive/VideoService.cs
+++ b/MediaBrowser.Api/Playback/Progressive/VideoService.cs
@@ -89,7 +89,7 @@ namespace MediaBrowser.Api.Playback.Progressive
protected override string GetCommandLineArguments(string outputPath, StreamState state, bool isEncoding)
{
// Get the output codec name
- var videoCodec = state.OutputVideoCodec;
+ var videoCodec = GetVideoEncoder(state.VideoRequest);
var format = string.Empty;
var keyFrame = string.Empty;
@@ -183,11 +183,11 @@ namespace MediaBrowser.Api.Playback.Progressive
}
// Get the output codec name
- var codec = state.OutputAudioCodec;
+ var codec = GetAudioEncoder(state.Request);
var args = "-codec:a:0 " + codec;
- if (codec.Equals("copy", StringComparison.OrdinalIgnoreCase))
+ if (string.Equals(codec, "copy", StringComparison.OrdinalIgnoreCase))
{
return args;
}
diff --git a/MediaBrowser.Api/PluginService.cs b/MediaBrowser.Api/PluginService.cs
index 4af9bfe58..eb49914eb 100644
--- a/MediaBrowser.Api/PluginService.cs
+++ b/MediaBrowser.Api/PluginService.cs
@@ -42,7 +42,7 @@ namespace MediaBrowser.Api
/// </summary>
/// <value>The id.</value>
[ApiMember(Name = "Id", Description = "Plugin Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")]
- public Guid Id { get; set; }
+ public string Id { get; set; }
}
/// <summary>
@@ -57,7 +57,7 @@ namespace MediaBrowser.Api
/// </summary>
/// <value>The id.</value>
[ApiMember(Name = "Id", Description = "Plugin Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
- public Guid Id { get; set; }
+ public string Id { get; set; }
}
/// <summary>
@@ -72,7 +72,7 @@ namespace MediaBrowser.Api
/// </summary>
/// <value>The id.</value>
[ApiMember(Name = "Id", Description = "Plugin Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public Guid Id { get; set; }
+ public string Id { get; set; }
/// <summary>
/// The raw Http Request Input Stream
@@ -239,7 +239,8 @@ namespace MediaBrowser.Api
/// <returns>System.Object.</returns>
public object Get(GetPluginConfiguration request)
{
- var plugin = _appHost.Plugins.First(p => p.Id == request.Id);
+ var guid = new Guid(request.Id);
+ var plugin = _appHost.Plugins.First(p => p.Id == guid);
var dateModified = plugin.ConfigurationDateLastModified;
@@ -298,7 +299,8 @@ namespace MediaBrowser.Api
/// <param name="request">The request.</param>
public void Delete(UninstallPlugin request)
{
- var plugin = _appHost.Plugins.First(p => p.Id == request.Id);
+ var guid = new Guid(request.Id);
+ var plugin = _appHost.Plugins.First(p => p.Id == guid);
_installationManager.UninstallPlugin(plugin);
}
diff --git a/MediaBrowser.Api/Reports/ReportRequests.cs b/MediaBrowser.Api/Reports/ReportRequests.cs
index 939b49282..7fe0bfba1 100644
--- a/MediaBrowser.Api/Reports/ReportRequests.cs
+++ b/MediaBrowser.Api/Reports/ReportRequests.cs
@@ -1,10 +1,9 @@
-using System;
-using System.Linq;
-using MediaBrowser.Api.UserLibrary;
-using MediaBrowser.Controller.Net;
+using MediaBrowser.Api.UserLibrary;
using MediaBrowser.Model.Entities;
using ServiceStack;
+using System;
using System.Collections.Generic;
+using System.Linq;
namespace MediaBrowser.Api.Reports
{
@@ -15,7 +14,7 @@ namespace MediaBrowser.Api.Reports
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Limit results to items containing a specific person
diff --git a/MediaBrowser.Api/Reports/ReportsService.cs b/MediaBrowser.Api/Reports/ReportsService.cs
index b13e5628c..4438876f7 100644
--- a/MediaBrowser.Api/Reports/ReportsService.cs
+++ b/MediaBrowser.Api/Reports/ReportsService.cs
@@ -175,7 +175,7 @@ namespace MediaBrowser.Api.Reports
{
// Placeholder in case needed later
request.Recursive = true;
- var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null;
+ var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null;
request.Fields = "MediaSources,DateCreated,Settings,Studios,SyncInfo,ItemCounts";
var parentItem = string.IsNullOrEmpty(request.ParentId) ?
diff --git a/MediaBrowser.Api/Session/SessionsService.cs b/MediaBrowser.Api/Session/SessionsService.cs
index d4ea6a0eb..1160f685c 100644
--- a/MediaBrowser.Api/Session/SessionsService.cs
+++ b/MediaBrowser.Api/Session/SessionsService.cs
@@ -21,7 +21,7 @@ namespace MediaBrowser.Api.Session
public class GetSessions : IReturn<List<SessionInfoDto>>
{
[ApiMember(Name = "ControllableByUserId", Description = "Optional. Filter by sessions that a given user is allowed to remote control.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? ControllableByUserId { get; set; }
+ public string ControllableByUserId { get; set; }
[ApiMember(Name = "DeviceId", Description = "Optional. Filter by device id.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string DeviceId { get; set; }
@@ -200,7 +200,7 @@ namespace MediaBrowser.Api.Session
public string Id { get; set; }
[ApiMember(Name = "UserId", Description = "UserId Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
}
[Route("/Sessions/{Id}/Users/{UserId}", "DELETE", Summary = "Removes an additional user from a session")]
@@ -211,7 +211,7 @@ namespace MediaBrowser.Api.Session
public string Id { get; set; }
[ApiMember(Name = "UserId", Description = "UserId Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
}
[Route("/Sessions/Capabilities", "POST", Summary = "Updates capabilities for a device")]
@@ -375,15 +375,15 @@ namespace MediaBrowser.Api.Session
result = result.Where(i => string.Equals(i.DeviceId, request.DeviceId, StringComparison.OrdinalIgnoreCase));
}
- if (request.ControllableByUserId.HasValue)
+ if (!string.IsNullOrWhiteSpace(request.ControllableByUserId))
{
result = result.Where(i => i.SupportsMediaControl);
- var user = _userManager.GetUserById(request.ControllableByUserId.Value);
+ var user = _userManager.GetUserById(request.ControllableByUserId);
if (!user.Policy.EnableRemoteControlOfOtherUsers)
{
- result = result.Where(i => !i.UserId.HasValue || i.ContainsUser(request.ControllableByUserId.Value));
+ result = result.Where(i => !i.UserId.HasValue || i.ContainsUser(request.ControllableByUserId));
}
if (!user.Policy.EnableSharedDeviceControl)
diff --git a/MediaBrowser.Api/SimilarItemsHelper.cs b/MediaBrowser.Api/SimilarItemsHelper.cs
index fb04dd030..91e749778 100644
--- a/MediaBrowser.Api/SimilarItemsHelper.cs
+++ b/MediaBrowser.Api/SimilarItemsHelper.cs
@@ -32,7 +32,7 @@ namespace MediaBrowser.Api
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// The maximum number of items to return
@@ -70,10 +70,10 @@ namespace MediaBrowser.Api
/// <returns>ItemsResult.</returns>
internal static ItemsResult GetSimilarItemsResult(DtoOptions dtoOptions, IUserManager userManager, IItemRepository itemRepository, ILibraryManager libraryManager, IUserDataManager userDataRepository, IDtoService dtoService, ILogger logger, BaseGetSimilarItemsFromItem request, Func<BaseItem, bool> includeInSearch, Func<BaseItem, BaseItem, int> getSimilarityScore)
{
- var user = request.UserId.HasValue ? userManager.GetUserById(request.UserId.Value) : null;
+ var user = !string.IsNullOrWhiteSpace(request.UserId) ? userManager.GetUserById(request.UserId) : null;
var item = string.IsNullOrEmpty(request.Id) ?
- (request.UserId.HasValue ? user.RootFolder :
+ (!string.IsNullOrWhiteSpace(request.UserId) ? user.RootFolder :
libraryManager.RootFolder) : libraryManager.GetItemById(request.Id);
Func<BaseItem, bool> filter = i => i.Id != item.Id && includeInSearch(i);
diff --git a/MediaBrowser.Api/TvShowsService.cs b/MediaBrowser.Api/TvShowsService.cs
index 9c9feead5..29a4a8bb5 100644
--- a/MediaBrowser.Api/TvShowsService.cs
+++ b/MediaBrowser.Api/TvShowsService.cs
@@ -77,7 +77,7 @@ namespace MediaBrowser.Api
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Skips over a given number of items within the results. Use for paging.
@@ -130,7 +130,7 @@ namespace MediaBrowser.Api
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Fields to return within the items, in addition to basic information
@@ -140,7 +140,7 @@ namespace MediaBrowser.Api
public string Fields { get; set; }
[ApiMember(Name = "Id", Description = "The series id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid Id { get; set; }
+ public string Id { get; set; }
[ApiMember(Name = "Season", Description = "Optional filter by season number.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public int? Season { get; set; }
@@ -183,7 +183,7 @@ namespace MediaBrowser.Api
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Fields to return within the items, in addition to basic information
@@ -193,7 +193,7 @@ namespace MediaBrowser.Api
public string Fields { get; set; }
[ApiMember(Name = "Id", Description = "The series id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid Id { get; set; }
+ public string Id { get; set; }
[ApiMember(Name = "IsSpecialSeason", Description = "Optional. Filter by special season.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool? IsSpecialSeason { get; set; }
diff --git a/MediaBrowser.Api/UserLibrary/ArtistsService.cs b/MediaBrowser.Api/UserLibrary/ArtistsService.cs
index 9f3f17465..2393d0533 100644
--- a/MediaBrowser.Api/UserLibrary/ArtistsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ArtistsService.cs
@@ -40,7 +40,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
}
/// <summary>
@@ -84,9 +84,9 @@ namespace MediaBrowser.Api.UserLibrary
var dtoOptions = GetDtoOptions(request);
- if (request.UserId.HasValue)
+ if (!string.IsNullOrWhiteSpace(request.UserId))
{
- var user = UserManager.GetUserById(request.UserId.Value);
+ var user = UserManager.GetUserById(request.UserId);
return DtoService.GetBaseItemDto(item, dtoOptions, user);
}
diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
index b2364ce3c..8084fd083 100644
--- a/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
+++ b/MediaBrowser.Api/UserLibrary/BaseItemsByNameService.cs
@@ -61,9 +61,9 @@ namespace MediaBrowser.Api.UserLibrary
BaseItem parentItem;
List<BaseItem> libraryItems = null;
- if (request.UserId.HasValue)
+ if (!string.IsNullOrWhiteSpace(request.UserId))
{
- user = UserManager.GetUserById(request.UserId.Value);
+ user = UserManager.GetUserById(request.UserId);
parentItem = string.IsNullOrEmpty(request.ParentId) ? user.RootFolder : LibraryManager.GetItemById(request.ParentId);
if (RequiresLibraryItems(request, dtoOptions))
@@ -92,7 +92,7 @@ namespace MediaBrowser.Api.UserLibrary
{
var folder = (Folder)parentItem;
- if (request.UserId.HasValue)
+ if (!string.IsNullOrWhiteSpace(request.UserId))
{
items = request.Recursive ?
folder.GetRecursiveChildren(user, filter) :
@@ -388,7 +388,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
[ApiMember(Name = "NameStartsWithOrGreater", Description = "Optional filter by items whose name is sorted equally or greater than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string NameStartsWithOrGreater { get; set; }
diff --git a/MediaBrowser.Api/UserLibrary/GameGenresService.cs b/MediaBrowser.Api/UserLibrary/GameGenresService.cs
index 2f7430d33..f9d0f0d0f 100644
--- a/MediaBrowser.Api/UserLibrary/GameGenresService.cs
+++ b/MediaBrowser.Api/UserLibrary/GameGenresService.cs
@@ -37,7 +37,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
}
[Authenticated]
@@ -71,9 +71,9 @@ namespace MediaBrowser.Api.UserLibrary
var dtoOptions = GetDtoOptions(request);
- if (request.UserId.HasValue)
+ if (!string.IsNullOrWhiteSpace(request.UserId))
{
- var user = UserManager.GetUserById(request.UserId.Value);
+ var user = UserManager.GetUserById(request.UserId);
return DtoService.GetBaseItemDto(item, dtoOptions, user);
}
diff --git a/MediaBrowser.Api/UserLibrary/GenresService.cs b/MediaBrowser.Api/UserLibrary/GenresService.cs
index 63c0575bf..070246886 100644
--- a/MediaBrowser.Api/UserLibrary/GenresService.cs
+++ b/MediaBrowser.Api/UserLibrary/GenresService.cs
@@ -39,7 +39,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
}
/// <summary>
@@ -76,9 +76,9 @@ namespace MediaBrowser.Api.UserLibrary
var dtoOptions = GetDtoOptions(request);
- if (request.UserId.HasValue)
+ if (!string.IsNullOrWhiteSpace(request.UserId))
{
- var user = UserManager.GetUserById(request.UserId.Value);
+ var user = UserManager.GetUserById(request.UserId);
return DtoService.GetBaseItemDto(item, dtoOptions, user);
}
diff --git a/MediaBrowser.Api/UserLibrary/ItemsService.cs b/MediaBrowser.Api/UserLibrary/ItemsService.cs
index 51f88d574..bc2e4699c 100644
--- a/MediaBrowser.Api/UserLibrary/ItemsService.cs
+++ b/MediaBrowser.Api/UserLibrary/ItemsService.cs
@@ -30,7 +30,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = false, DataType = "string", ParameterType = "path", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Limit results to items containing a specific person
@@ -325,7 +325,7 @@ namespace MediaBrowser.Api.UserLibrary
private async Task<ItemsResult> GetItems(GetItems request)
{
var parentItem = string.IsNullOrEmpty(request.ParentId) ? null : _libraryManager.GetItemById(request.ParentId);
- var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null;
+ var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null;
var result = await GetItemsToSerialize(request, user, parentItem).ConfigureAwait(false);
diff --git a/MediaBrowser.Api/UserLibrary/MusicGenresService.cs b/MediaBrowser.Api/UserLibrary/MusicGenresService.cs
index 1fe9dfaaa..e63d6c0f4 100644
--- a/MediaBrowser.Api/UserLibrary/MusicGenresService.cs
+++ b/MediaBrowser.Api/UserLibrary/MusicGenresService.cs
@@ -37,7 +37,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
}
[Authenticated]
@@ -71,9 +71,9 @@ namespace MediaBrowser.Api.UserLibrary
var dtoOptions = GetDtoOptions(request);
- if (request.UserId.HasValue)
+ if (!string.IsNullOrWhiteSpace(request.UserId))
{
- var user = UserManager.GetUserById(request.UserId.Value);
+ var user = UserManager.GetUserById(request.UserId);
return DtoService.GetBaseItemDto(item, dtoOptions, user);
}
diff --git a/MediaBrowser.Api/UserLibrary/PersonsService.cs b/MediaBrowser.Api/UserLibrary/PersonsService.cs
index 08ee6e462..b7fb4f542 100644
--- a/MediaBrowser.Api/UserLibrary/PersonsService.cs
+++ b/MediaBrowser.Api/UserLibrary/PersonsService.cs
@@ -43,7 +43,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
}
/// <summary>
@@ -87,9 +87,9 @@ namespace MediaBrowser.Api.UserLibrary
var dtoOptions = GetDtoOptions(request);
- if (request.UserId.HasValue)
+ if (!string.IsNullOrWhiteSpace(request.UserId))
{
- var user = UserManager.GetUserById(request.UserId.Value);
+ var user = UserManager.GetUserById(request.UserId);
return DtoService.GetBaseItemDto(item, dtoOptions, user);
}
diff --git a/MediaBrowser.Api/UserLibrary/PlaystateService.cs b/MediaBrowser.Api/UserLibrary/PlaystateService.cs
index f66f307db..5f32725d8 100644
--- a/MediaBrowser.Api/UserLibrary/PlaystateService.cs
+++ b/MediaBrowser.Api/UserLibrary/PlaystateService.cs
@@ -23,7 +23,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
[ApiMember(Name = "DatePlayed", Description = "The date the item was played (if any). Format = yyyyMMddHHmmss", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "POST")]
public string DatePlayed { get; set; }
@@ -47,7 +47,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Gets or sets the id.
@@ -90,7 +90,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Gets or sets the id.
@@ -143,7 +143,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Gets or sets the id.
@@ -198,7 +198,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Gets or sets the id.
diff --git a/MediaBrowser.Api/UserLibrary/StudiosService.cs b/MediaBrowser.Api/UserLibrary/StudiosService.cs
index ae1da0346..d6a7db14f 100644
--- a/MediaBrowser.Api/UserLibrary/StudiosService.cs
+++ b/MediaBrowser.Api/UserLibrary/StudiosService.cs
@@ -38,7 +38,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
}
/// <summary>
@@ -75,9 +75,9 @@ namespace MediaBrowser.Api.UserLibrary
var dtoOptions = GetDtoOptions(request);
- if (request.UserId.HasValue)
+ if (!string.IsNullOrWhiteSpace(request.UserId))
{
- var user = UserManager.GetUserById(request.UserId.Value);
+ var user = UserManager.GetUserById(request.UserId);
return DtoService.GetBaseItemDto(item, dtoOptions, user);
}
diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
index aa6e227d8..c2c481cb6 100644
--- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
+++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
@@ -5,9 +5,7 @@ using MediaBrowser.Controller.Library;
using MediaBrowser.Controller.Net;
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;
@@ -28,7 +26,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Gets or sets the id.
@@ -49,7 +47,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
}
/// <summary>
@@ -63,7 +61,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Gets or sets the item id.
@@ -84,7 +82,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Gets or sets the id.
@@ -105,7 +103,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Gets or sets the id.
@@ -126,7 +124,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "DELETE")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Gets or sets the id.
@@ -147,7 +145,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "POST")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Gets or sets the id.
@@ -175,7 +173,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Gets or sets the id.
@@ -196,7 +194,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = true, DataType = "string", ParameterType = "path", Verb = "GET")]
- public Guid UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Gets or sets the id.
@@ -515,7 +513,7 @@ namespace MediaBrowser.Api.UserLibrary
/// <param name="itemId">The item id.</param>
/// <param name="isFavorite">if set to <c>true</c> [is favorite].</param>
/// <returns>Task{UserItemDataDto}.</returns>
- private async Task<UserItemDataDto> MarkFavorite(Guid userId, string itemId, bool isFavorite)
+ private async Task<UserItemDataDto> MarkFavorite(string userId, string itemId, bool isFavorite)
{
var user = _userManager.GetUserById(userId);
@@ -563,7 +561,7 @@ namespace MediaBrowser.Api.UserLibrary
/// <param name="itemId">The item id.</param>
/// <param name="likes">if set to <c>true</c> [likes].</param>
/// <returns>Task{UserItemDataDto}.</returns>
- private async Task<UserItemDataDto> UpdateUserItemRating(Guid userId, string itemId, bool? likes)
+ private async Task<UserItemDataDto> UpdateUserItemRating(string userId, string itemId, bool? likes)
{
var user = _userManager.GetUserById(userId);
diff --git a/MediaBrowser.Api/UserLibrary/YearsService.cs b/MediaBrowser.Api/UserLibrary/YearsService.cs
index d95496333..859b9f959 100644
--- a/MediaBrowser.Api/UserLibrary/YearsService.cs
+++ b/MediaBrowser.Api/UserLibrary/YearsService.cs
@@ -38,7 +38,7 @@ namespace MediaBrowser.Api.UserLibrary
/// </summary>
/// <value>The user id.</value>
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
}
/// <summary>
@@ -75,9 +75,9 @@ namespace MediaBrowser.Api.UserLibrary
var dtoOptions = GetDtoOptions(request);
- if (request.UserId.HasValue)
+ if (!string.IsNullOrWhiteSpace(request.UserId))
{
- var user = UserManager.GetUserById(request.UserId.Value);
+ var user = UserManager.GetUserById(request.UserId);
return DtoService.GetBaseItemDto(item, dtoOptions, user);
}
diff --git a/MediaBrowser.Api/VideosService.cs b/MediaBrowser.Api/VideosService.cs
index d1b0eb05f..a65bee7ef 100644
--- a/MediaBrowser.Api/VideosService.cs
+++ b/MediaBrowser.Api/VideosService.cs
@@ -19,7 +19,7 @@ namespace MediaBrowser.Api
public class GetAdditionalParts : IReturn<ItemsResult>
{
[ApiMember(Name = "UserId", Description = "Optional. Filter by user id, and attach user data", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
- public Guid? UserId { get; set; }
+ public string UserId { get; set; }
/// <summary>
/// Gets or sets the id.
@@ -71,10 +71,10 @@ namespace MediaBrowser.Api
/// <returns>System.Object.</returns>
public object Get(GetAdditionalParts request)
{
- var user = request.UserId.HasValue ? _userManager.GetUserById(request.UserId.Value) : null;
+ var user = !string.IsNullOrWhiteSpace(request.UserId) ? _userManager.GetUserById(request.UserId) : null;
var item = string.IsNullOrEmpty(request.Id)
- ? (request.UserId.HasValue
+ ? (!string.IsNullOrWhiteSpace(request.UserId)
? user.RootFolder
: _libraryManager.RootFolder)
: _libraryManager.GetItemById(request.Id);