aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Api/IHasDtoOptions.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Api/IHasDtoOptions.cs')
-rw-r--r--MediaBrowser.Api/IHasDtoOptions.cs49
1 files changed, 49 insertions, 0 deletions
diff --git a/MediaBrowser.Api/IHasDtoOptions.cs b/MediaBrowser.Api/IHasDtoOptions.cs
new file mode 100644
index 000000000..f7fb57f01
--- /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;
+ }
+ }
+}