aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/BaseApiService.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/BaseApiService.cs')
-rw-r--r--MediaBrowser.Api/BaseApiService.cs91
1 files changed, 42 insertions, 49 deletions
diff --git a/MediaBrowser.Api/BaseApiService.cs b/MediaBrowser.Api/BaseApiService.cs
index 1629d49b4..db6af0c4b 100644
--- a/MediaBrowser.Api/BaseApiService.cs
+++ b/MediaBrowser.Api/BaseApiService.cs
@@ -55,7 +55,7 @@ namespace MediaBrowser.Api
return Request.Headers[name];
}
- private static readonly string[] EmptyStringArray = new string[] { };
+ private static readonly string[] EmptyStringArray = Array.Empty<string>();
public static string[] SplitValue(string value, char delim)
{
if (string.IsNullOrWhiteSpace(value))
@@ -65,7 +65,13 @@ namespace MediaBrowser.Api
return value.Split(new[] { delim }, StringSplitOptions.RemoveEmptyEntries);
}
-
+
+ public static Guid[] GetGuids(string value)
+ {
+ // Unfortunately filtermenu.js was using |. This can be deprecated after a while.
+ return (value ?? string.Empty).Split(new[] { ',', '|' }, StringSplitOptions.RemoveEmptyEntries).Select(i => new Guid(i)).ToArray();
+ }
+
/// <summary>
/// To the optimized result.
/// </summary>
@@ -75,17 +81,17 @@ namespace MediaBrowser.Api
protected object ToOptimizedResult<T>(T result)
where T : class
{
- return ResultFactory.GetOptimizedResult(Request, result);
+ return ResultFactory.GetResult(Request, result);
}
- protected void AssertCanUpdateUser(IAuthorizationContext authContext, IUserManager userManager, string userId, bool restrictUserPreferences)
+ protected void AssertCanUpdateUser(IAuthorizationContext authContext, IUserManager userManager, Guid userId, bool restrictUserPreferences)
{
var auth = authContext.GetAuthorizationInfo(Request);
- var authenticatedUser = userManager.GetUserById(auth.UserId);
+ var authenticatedUser = auth.User;
// If they're going to update the record of another user, they must be an administrator
- if (!string.Equals(userId, auth.UserId, StringComparison.OrdinalIgnoreCase))
+ if (!userId.Equals(auth.UserId))
{
if (!authenticatedUser.Policy.IsAdministrator)
{
@@ -102,24 +108,12 @@ namespace MediaBrowser.Api
}
/// <summary>
- /// To the optimized serialized result using cache.
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="result">The result.</param>
- /// <returns>System.Object.</returns>
- protected object ToOptimizedSerializedResultUsingCache<T>(T result)
- where T : class
- {
- return ToOptimizedResult(result);
- }
-
- /// <summary>
/// Gets the session.
/// </summary>
/// <returns>SessionInfo.</returns>
- protected async Task<SessionInfo> GetSession(ISessionContext sessionContext)
+ protected SessionInfo GetSession(ISessionContext sessionContext)
{
- var session = await sessionContext.GetSession(Request).ConfigureAwait(false);
+ var session = sessionContext.GetSession(Request);
if (session == null)
{
@@ -133,38 +127,37 @@ namespace MediaBrowser.Api
{
var options = new DtoOptions();
- var authInfo = authContext.GetAuthorizationInfo(Request);
-
- options.DeviceId = authInfo.DeviceId;
-
var hasFields = request as IHasItemFields;
if (hasFields != null)
{
options.Fields = hasFields.GetItemFields();
}
- var client = authInfo.Client ?? string.Empty;
- if (client.IndexOf("kodi", StringComparison.OrdinalIgnoreCase) != -1 ||
- client.IndexOf("wmc", StringComparison.OrdinalIgnoreCase) != -1 ||
- client.IndexOf("media center", StringComparison.OrdinalIgnoreCase) != -1 ||
- client.IndexOf("classic", StringComparison.OrdinalIgnoreCase) != -1)
+ if (!options.ContainsField(Model.Querying.ItemFields.RecursiveItemCount) || !options.ContainsField(Model.Querying.ItemFields.ChildCount))
{
- var list = options.Fields.ToList();
- list.Add(Model.Querying.ItemFields.RecursiveItemCount);
- options.Fields = list.ToArray(list.Count);
- }
+ var client = authContext.GetAuthorizationInfo(Request).Client ?? string.Empty;
+ if (client.IndexOf("kodi", StringComparison.OrdinalIgnoreCase) != -1 ||
+ client.IndexOf("wmc", StringComparison.OrdinalIgnoreCase) != -1 ||
+ client.IndexOf("media center", StringComparison.OrdinalIgnoreCase) != -1 ||
+ client.IndexOf("classic", StringComparison.OrdinalIgnoreCase) != -1)
+ {
+ var list = options.Fields.ToList();
+ list.Add(Model.Querying.ItemFields.RecursiveItemCount);
+ options.Fields = list.ToArray(list.Count);
+ }
- if (client.IndexOf("kodi", StringComparison.OrdinalIgnoreCase) != -1 ||
- client.IndexOf("wmc", StringComparison.OrdinalIgnoreCase) != -1 ||
- client.IndexOf("media center", StringComparison.OrdinalIgnoreCase) != -1 ||
- client.IndexOf("classic", StringComparison.OrdinalIgnoreCase) != -1 ||
- client.IndexOf("roku", StringComparison.OrdinalIgnoreCase) != -1 ||
- client.IndexOf("samsung", StringComparison.OrdinalIgnoreCase) != -1 ||
- client.IndexOf("androidtv", StringComparison.OrdinalIgnoreCase) != -1)
- {
- var list = options.Fields.ToList();
- list.Add(Model.Querying.ItemFields.ChildCount);
- options.Fields = list.ToArray(list.Count);
+ if (client.IndexOf("kodi", StringComparison.OrdinalIgnoreCase) != -1 ||
+ client.IndexOf("wmc", StringComparison.OrdinalIgnoreCase) != -1 ||
+ client.IndexOf("media center", StringComparison.OrdinalIgnoreCase) != -1 ||
+ client.IndexOf("classic", StringComparison.OrdinalIgnoreCase) != -1 ||
+ client.IndexOf("roku", StringComparison.OrdinalIgnoreCase) != -1 ||
+ client.IndexOf("samsung", StringComparison.OrdinalIgnoreCase) != -1 ||
+ client.IndexOf("androidtv", StringComparison.OrdinalIgnoreCase) != -1)
+ {
+ var list = options.Fields.ToList();
+ list.Add(Model.Querying.ItemFields.ChildCount);
+ options.Fields = list.ToArray(list.Count);
+ }
}
var hasDtoOptions = request as IHasDtoOptions;
@@ -289,7 +282,7 @@ namespace MediaBrowser.Api
IncludeItemTypes = new[] { typeof(T).Name },
DtoOptions = dtoOptions
- }).OfType<Person>().FirstOrDefault();
+ }).OfType<T>().FirstOrDefault();
if (result == null)
{
@@ -299,7 +292,7 @@ namespace MediaBrowser.Api
IncludeItemTypes = new[] { typeof(T).Name },
DtoOptions = dtoOptions
- }).OfType<Person>().FirstOrDefault();
+ }).OfType<T>().FirstOrDefault();
}
if (result == null)
@@ -310,10 +303,10 @@ namespace MediaBrowser.Api
IncludeItemTypes = new[] { typeof(T).Name },
DtoOptions = dtoOptions
- }).OfType<Person>().FirstOrDefault();
+ }).OfType<T>().FirstOrDefault();
}
- return result as T;
+ return result;
}
protected string GetPathValue(int index)
@@ -331,7 +324,7 @@ namespace MediaBrowser.Api
return pathInfo[index];
}
- private static List<string> Parse(string pathUri)
+ private List<string> Parse(string pathUri)
{
var actionParts = pathUri.Split(new[] { "://" }, StringSplitOptions.None);