aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api')
-rw-r--r--MediaBrowser.Api/IHasDtoOptions.cs49
-rw-r--r--MediaBrowser.Api/MediaBrowser.Api.csproj1
-rw-r--r--MediaBrowser.Api/PackageReviewService.cs8
-rw-r--r--MediaBrowser.Api/TvShowsService.cs30
-rw-r--r--MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs37
-rw-r--r--MediaBrowser.Api/UserLibrary/UserLibraryService.cs17
6 files changed, 94 insertions, 48 deletions
diff --git a/MediaBrowser.Api/IHasDtoOptions.cs b/MediaBrowser.Api/IHasDtoOptions.cs
new file mode 100644
index 0000000000..f7fb57f014
--- /dev/null
+++ b/MediaBrowser.Api/IHasDtoOptions.cs
@@ -0,0 +1,49 @@
+using MediaBrowser.Model.Dto;
+using MediaBrowser.Model.Entities;
+using System;
+using System.Linq;
+
+namespace MediaBrowser.Api
+{
+ public interface IHasDtoOptions : IHasItemFields
+ {
+ bool? EnableImages { get; set; }
+
+ int? ImageTypeLimit { get; set; }
+
+ string EnableImageTypes { get; set; }
+ }
+
+ public static class HasDtoOptionsExtensions
+ {
+ public static DtoOptions GetDtoOptions(this IHasDtoOptions request)
+ {
+ var options = new DtoOptions();
+
+ options.Fields = request.GetItemFields().ToList();
+ options.EnableImages = request.EnableImages ?? true;
+
+ if (request.ImageTypeLimit.HasValue)
+ {
+ options.ImageTypeLimit = request.ImageTypeLimit.Value;
+ }
+
+ if (string.IsNullOrWhiteSpace(request.EnableImageTypes))
+ {
+ if (options.EnableImages)
+ {
+ // Get everything
+ options.ImageTypes = Enum.GetNames(typeof(ImageType))
+ .Select(i => (ImageType)Enum.Parse(typeof(ImageType), i, true))
+ .ToList();
+ }
+ }
+ else
+ {
+ options.ImageTypes = (request.EnableImageTypes ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).Select(v => (ImageType)Enum.Parse(typeof(ImageType), v, true)).ToList();
+ }
+
+ return options;
+ }
+ }
+}
diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj
index dae3790990..286b807b66 100644
--- a/MediaBrowser.Api/MediaBrowser.Api.csproj
+++ b/MediaBrowser.Api/MediaBrowser.Api.csproj
@@ -77,6 +77,7 @@
<Compile Include="Dlna\DlnaServerService.cs" />
<Compile Include="Dlna\DlnaService.cs" />
<Compile Include="FilterService.cs" />
+ <Compile Include="IHasDtoOptions.cs" />
<Compile Include="Library\ChapterService.cs" />
<Compile Include="Playback\Hls\MpegDashService.cs" />
<Compile Include="Playback\MediaInfoService.cs" />
diff --git a/MediaBrowser.Api/PackageReviewService.cs b/MediaBrowser.Api/PackageReviewService.cs
index 112a2c5cea..c4cf1eac31 100644
--- a/MediaBrowser.Api/PackageReviewService.cs
+++ b/MediaBrowser.Api/PackageReviewService.cs
@@ -1,5 +1,4 @@
-using MediaBrowser.Common.Constants;
-using MediaBrowser.Common.Net;
+using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Net;
using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Serialization;
@@ -103,6 +102,7 @@ namespace MediaBrowser.Api
private readonly IHttpClient _httpClient;
private readonly INetworkManager _netManager;
private readonly IJsonSerializer _serializer;
+ private const string MbAdminUrl = "http://www.mb3admin.com/admin/";
public PackageReviewService(IHttpClient client, INetworkManager net, IJsonSerializer serializer)
{
@@ -132,7 +132,7 @@ namespace MediaBrowser.Api
parms += "&title=true";
}
- var result = _httpClient.Get(Constants.MbAdminUrl + "/service/packageReview/retrieve" + parms, CancellationToken.None).Result;
+ var result = _httpClient.Get(MbAdminUrl + "/service/packageReview/retrieve" + parms, CancellationToken.None).Result;
var reviews = _serializer.DeserializeFromStream<List<PackageReviewInfo>>(result);
@@ -153,7 +153,7 @@ namespace MediaBrowser.Api
{ "review", reviewText },
};
- Task.WaitAll(_httpClient.Post(Constants.MbAdminUrl + "/service/packageReview/update", review, CancellationToken.None));
+ Task.WaitAll(_httpClient.Post(MbAdminUrl + "/service/packageReview/update", review, CancellationToken.None));
}
}
}
diff --git a/MediaBrowser.Api/TvShowsService.cs b/MediaBrowser.Api/TvShowsService.cs
index 2f9bbca476..d1464cd262 100644
--- a/MediaBrowser.Api/TvShowsService.cs
+++ b/MediaBrowser.Api/TvShowsService.cs
@@ -19,7 +19,7 @@ namespace MediaBrowser.Api
/// Class GetNextUpEpisodes
/// </summary>
[Route("/Shows/NextUp", "GET", Summary = "Gets a list of next up episodes")]
- public class GetNextUpEpisodes : IReturn<ItemsResult>, IHasItemFields
+ public class GetNextUpEpisodes : IReturn<ItemsResult>, IHasDtoOptions
{
/// <summary>
/// Gets or sets the user id.
@@ -58,10 +58,19 @@ namespace MediaBrowser.Api
/// <value>The parent id.</value>
[ApiMember(Name = "ParentId", Description = "Specify this to localize the search to a specific item or folder. Omit to use the root", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string ParentId { get; set; }
+
+ [ApiMember(Name = "EnableImages", Description = "Optional, include image information in output", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "GET")]
+ public bool? EnableImages { get; set; }
+
+ [ApiMember(Name = "ImageTypeLimit", Description = "Optional, the max number of images to return, per image type", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
+ public int? ImageTypeLimit { get; set; }
+
+ [ApiMember(Name = "EnableImageTypes", Description = "Optional. The image types to include in the output.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public string EnableImageTypes { get; set; }
}
[Route("/Shows/Upcoming", "GET", Summary = "Gets a list of upcoming episodes")]
- public class GetUpcomingEpisodes : IReturn<ItemsResult>, IHasItemFields
+ public class GetUpcomingEpisodes : IReturn<ItemsResult>, IHasDtoOptions
{
/// <summary>
/// Gets or sets the user id.
@@ -97,6 +106,15 @@ namespace MediaBrowser.Api
/// <value>The parent id.</value>
[ApiMember(Name = "ParentId", Description = "Specify this to localize the search to a specific item or folder. Omit to use the root", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string ParentId { get; set; }
+
+ [ApiMember(Name = "EnableImages", Description = "Optional, include image information in output", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "GET")]
+ public bool? EnableImages { get; set; }
+
+ [ApiMember(Name = "ImageTypeLimit", Description = "Optional, the max number of images to return, per image type", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
+ public int? ImageTypeLimit { get; set; }
+
+ [ApiMember(Name = "EnableImageTypes", Description = "Optional. The image types to include in the output.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public string EnableImageTypes { get; set; }
}
[Route("/Shows/{Id}/Similar", "GET", Summary = "Finds tv shows similar to a given one.")]
@@ -252,9 +270,9 @@ namespace MediaBrowser.Api
var pagedItems = ApplyPaging(previousEpisodes, request.StartIndex, request.Limit);
- var fields = request.GetItemFields().ToList();
+ var options = request.GetDtoOptions();
- var returnItems = pagedItems.Select(i => _dtoService.GetBaseItemDto(i, fields, user)).ToArray();
+ var returnItems = pagedItems.Select(i => _dtoService.GetBaseItemDto(i, options, user)).ToArray();
var result = new ItemsResult
{
@@ -283,9 +301,9 @@ namespace MediaBrowser.Api
var user = _userManager.GetUserById(request.UserId);
- var fields = request.GetItemFields().ToList();
+ var options = request.GetDtoOptions();
- var returnItems = result.Items.Select(i => _dtoService.GetBaseItemDto(i, fields, user)).ToArray();
+ var returnItems = result.Items.Select(i => _dtoService.GetBaseItemDto(i, options, user)).ToArray();
return ToOptimizedSerializedResultUsingCache(new ItemsResult
{
diff --git a/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs b/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs
index 808dbb1ff9..fffc11d68f 100644
--- a/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs
+++ b/MediaBrowser.Api/UserLibrary/BaseItemsRequest.cs
@@ -1,5 +1,4 @@
-using MediaBrowser.Model.Dto;
-using MediaBrowser.Model.Entities;
+using MediaBrowser.Model.Entities;
using MediaBrowser.Model.Querying;
using ServiceStack;
using System;
@@ -8,7 +7,7 @@ using System.Linq;
namespace MediaBrowser.Api.UserLibrary
{
- public abstract class BaseItemsRequest : IHasItemFields
+ public abstract class BaseItemsRequest : IHasDtoOptions
{
protected BaseItemsRequest()
{
@@ -123,7 +122,7 @@ namespace MediaBrowser.Api.UserLibrary
public string Years { get; set; }
[ApiMember(Name = "EnableImages", Description = "Optional, include image information in output", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "GET")]
- public bool EnableImages { get; set; }
+ public bool? EnableImages { get; set; }
[ApiMember(Name = "ImageTypeLimit", Description = "Optional, the max number of images to return, per image type", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
public int? ImageTypeLimit { get; set; }
@@ -213,35 +212,5 @@ namespace MediaBrowser.Api.UserLibrary
return val.Split(',');
}
-
- public DtoOptions GetDtoOptions()
- {
- var options = new DtoOptions();
-
- options.Fields = this.GetItemFields().ToList();
- options.EnableImages = EnableImages;
-
- if (ImageTypeLimit.HasValue)
- {
- options.ImageTypeLimit = ImageTypeLimit.Value;
- }
-
- if (string.IsNullOrWhiteSpace(EnableImageTypes))
- {
- if (options.EnableImages)
- {
- // Get everything
- options.ImageTypes = Enum.GetNames(typeof(ImageType))
- .Select(i => (ImageType)Enum.Parse(typeof(ImageType), i, true))
- .ToList();
- }
- }
- else
- {
- options.ImageTypes = (EnableImageTypes ?? string.Empty).Split(',').Where(i => !string.IsNullOrWhiteSpace(i)).Select(v => (ImageType)Enum.Parse(typeof(ImageType), v, true)).ToList();
- }
-
- return options;
- }
}
}
diff --git a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
index 511312a631..a64e0758ab 100644
--- a/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
+++ b/MediaBrowser.Api/UserLibrary/UserLibraryService.cs
@@ -221,7 +221,7 @@ namespace MediaBrowser.Api.UserLibrary
}
[Route("/Users/{UserId}/Items/Latest", "GET", Summary = "Gets latest media")]
- public class GetLatestMedia : IReturn<List<BaseItemDto>>, IHasItemFields
+ public class GetLatestMedia : IReturn<List<BaseItemDto>>, IHasDtoOptions
{
/// <summary>
/// Gets or sets the user id.
@@ -251,6 +251,15 @@ namespace MediaBrowser.Api.UserLibrary
[ApiMember(Name = "GroupItems", Description = "Whether or not to group items into a parent container.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool GroupItems { get; set; }
+ [ApiMember(Name = "EnableImages", Description = "Optional, include image information in output", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "GET")]
+ public bool? EnableImages { get; set; }
+
+ [ApiMember(Name = "ImageTypeLimit", Description = "Optional, the max number of images to return, per image type", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
+ public int? ImageTypeLimit { get; set; }
+
+ [ApiMember(Name = "EnableImageTypes", Description = "Optional. The image types to include in the output.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
+ public string EnableImageTypes { get; set; }
+
public GetLatestMedia()
{
Limit = 20;
@@ -362,7 +371,7 @@ namespace MediaBrowser.Api.UserLibrary
}
}
- var fields = request.GetItemFields().ToList();
+ var options = request.GetDtoOptions();
var dtos = list.Select(i =>
{
@@ -374,8 +383,8 @@ namespace MediaBrowser.Api.UserLibrary
item = i.Item1;
childCount = i.Item2.Count;
}
-
- var dto = _dtoService.GetBaseItemDto(item, fields, user);
+
+ var dto = _dtoService.GetBaseItemDto(item, options, user);
dto.ChildCount = childCount;