2019-01-13 20:01:16 +00:00
using System ;
2014-08-03 02:16:37 +00:00
using System.Linq ;
2019-01-13 19:24:58 +00:00
using MediaBrowser.Model.Entities ;
using MediaBrowser.Model.Querying ;
2016-10-25 19:02:04 +00:00
using MediaBrowser.Model.Services ;
2013-03-11 05:06:55 +00:00
namespace MediaBrowser.Api.UserLibrary
{
2014-12-01 12:43:34 +00:00
public abstract class BaseItemsRequest : IHasDtoOptions
2013-03-11 05:06:55 +00:00
{
2014-11-30 19:01:33 +00:00
protected BaseItemsRequest ( )
{
EnableImages = true ;
2016-05-09 03:13:38 +00:00
EnableTotalRecordCount = true ;
2014-11-30 19:01:33 +00:00
}
2015-07-27 19:16:30 +00:00
/// <summary>
/// Gets or sets the max offical rating.
/// </summary>
/// <value>The max offical rating.</value>
[ApiMember(Name = "MaxOfficialRating", Description = "Optional filter by maximum official rating (PG, PG-13, TV-MA, etc).", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string MaxOfficialRating { get ; set ; }
[ApiMember(Name = "HasThemeSong", Description = "Optional filter by items with theme songs.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public bool? HasThemeSong { get ; set ; }
[ApiMember(Name = "HasThemeVideo", Description = "Optional filter by items with theme videos.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public bool? HasThemeVideo { get ; set ; }
[ApiMember(Name = "HasSubtitles", Description = "Optional filter by items with subtitles.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public bool? HasSubtitles { get ; set ; }
[ApiMember(Name = "HasSpecialFeature", Description = "Optional filter by items with special features.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public bool? HasSpecialFeature { get ; set ; }
[ApiMember(Name = "HasTrailer", Description = "Optional filter by items with trailers.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public bool? HasTrailer { get ; set ; }
[ApiMember(Name = "AdjacentTo", Description = "Optional. Return items that are siblings of a supplied item.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string AdjacentTo { get ; set ; }
[ApiMember(Name = "MinIndexNumber", Description = "Optional filter by minimum index number.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
public int? MinIndexNumber { get ; set ; }
[ApiMember(Name = "ParentIndexNumber", Description = "Optional filter by parent index number.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
public int? ParentIndexNumber { get ; set ; }
[ApiMember(Name = "HasParentalRating", Description = "Optional filter by items that have or do not have a parental rating", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool? HasParentalRating { get ; set ; }
[ApiMember(Name = "IsHD", Description = "Optional filter by items that are HD or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool? IsHD { get ; set ; }
2018-09-12 17:26:21 +00:00
public bool? Is4K { get ; set ; }
2015-07-27 19:16:30 +00:00
[ApiMember(Name = "LocationTypes", Description = "Optional. If specified, results will be filtered based on LocationType. This allows multiple, comma delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string LocationTypes { get ; set ; }
[ApiMember(Name = "ExcludeLocationTypes", Description = "Optional. If specified, results will be filtered based on LocationType. This allows multiple, comma delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string ExcludeLocationTypes { get ; set ; }
[ApiMember(Name = "IsMissing", Description = "Optional filter by items that are missing episodes or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool? IsMissing { get ; set ; }
[ApiMember(Name = "IsUnaired", Description = "Optional filter by items that are unaired episodes or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool? IsUnaired { get ; set ; }
[ApiMember(Name = "MinCommunityRating", Description = "Optional filter by minimum community rating.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
public double? MinCommunityRating { get ; set ; }
[ApiMember(Name = "MinCriticRating", Description = "Optional filter by minimum critic rating.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
public double? MinCriticRating { get ; set ; }
[ApiMember(Name = "AiredDuringSeason", Description = "Gets all episodes that aired during a season, including specials.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
public int? AiredDuringSeason { get ; set ; }
2017-06-17 22:59:17 +00:00
[ApiMember(Name = "MinPremiereDate", Description = "Optional. The minimum premiere date. Format = ISO", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
2015-07-27 19:16:30 +00:00
public string MinPremiereDate { get ; set ; }
2017-06-17 22:59:17 +00:00
[ApiMember(Name = "MinDateLastSaved", Description = "Optional. The minimum premiere date. Format = ISO", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
2017-05-23 16:43:24 +00:00
public string MinDateLastSaved { get ; set ; }
2017-06-17 22:59:17 +00:00
[ApiMember(Name = "MinDateLastSavedForUser", Description = "Optional. The minimum premiere date. Format = ISO", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
2017-05-23 16:43:24 +00:00
public string MinDateLastSavedForUser { get ; set ; }
2017-06-17 22:59:17 +00:00
[ApiMember(Name = "MaxPremiereDate", Description = "Optional. The maximum premiere date. Format = ISO", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
2015-07-27 19:16:30 +00:00
public string MaxPremiereDate { get ; set ; }
[ApiMember(Name = "HasOverview", Description = "Optional filter by items that have an overview or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool? HasOverview { get ; set ; }
[ApiMember(Name = "HasImdbId", Description = "Optional filter by items that have an imdb id or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool? HasImdbId { get ; set ; }
[ApiMember(Name = "HasTmdbId", Description = "Optional filter by items that have a tmdb id or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool? HasTmdbId { get ; set ; }
[ApiMember(Name = "HasTvdbId", Description = "Optional filter by items that have a tvdb id or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool? HasTvdbId { get ; set ; }
2018-09-12 17:26:21 +00:00
[ApiMember(Name = "ExcludeItemIds", Description = "Optional. If specified, results will be filtered by exxcluding item ids. This allows multiple, comma delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
2016-07-22 05:38:01 +00:00
public string ExcludeItemIds { get ; set ; }
2016-05-09 03:13:38 +00:00
public bool EnableTotalRecordCount { get ; set ; }
2013-03-11 05:06:55 +00:00
/// <summary>
/// Skips over a given number of items within the results. Use for paging.
/// </summary>
/// <value>The start index.</value>
[ApiMember(Name = "StartIndex", Description = "Optional. The record index to start at. All items with a lower index will be dropped from the results.", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
public int? StartIndex { get ; set ; }
/// <summary>
2020-06-15 22:37:52 +00:00
/// The maximum number of items to return.
2013-03-11 05:06:55 +00:00
/// </summary>
/// <value>The limit.</value>
[ApiMember(Name = "Limit", Description = "Optional. The maximum number of records to return", IsRequired = false, DataType = "int", ParameterType = "query", Verb = "GET")]
public int? Limit { get ; set ; }
/// <summary>
2020-06-15 22:37:52 +00:00
/// Whether or not to perform the query recursively.
2013-03-11 05:06:55 +00:00
/// </summary>
/// <value><c>true</c> if recursive; otherwise, <c>false</c>.</value>
[ApiMember(Name = "Recursive", Description = "When searching within folders, this determines whether or not the search will be recursive. true/false", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "GET")]
public bool Recursive { get ; set ; }
2018-09-12 17:26:21 +00:00
public string SearchTerm { get ; set ; }
2013-03-11 05:06:55 +00:00
/// <summary>
/// Gets or sets the sort order.
/// </summary>
/// <value>The sort order.</value>
[ApiMember(Name = "SortOrder", Description = "Sort Order - Ascending,Descending", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
2017-09-04 19:28:22 +00:00
public string SortOrder { get ; set ; }
2013-03-11 05:06:55 +00:00
/// <summary>
/// Specify this to localize the search to a specific item or folder. Omit to use the root.
/// </summary>
/// <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 ; }
/// <summary>
2020-06-15 22:37:52 +00:00
/// Fields to return within the items, in addition to basic information.
2013-03-11 05:06:55 +00:00
/// </summary>
/// <value>The fields.</value>
2017-04-29 06:22:33 +00:00
[ApiMember(Name = "Fields", Description = "Optional. Specify additional fields of information to return in the output. This allows multiple, comma delimeted. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
2013-03-11 05:06:55 +00:00
public string Fields { get ; set ; }
2013-04-11 19:36:50 +00:00
/// <summary>
/// Gets or sets the exclude item types.
/// </summary>
/// <value>The exclude item types.</value>
[ApiMember(Name = "ExcludeItemTypes", 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 ExcludeItemTypes { get ; set ; }
/// <summary>
/// Gets or sets the include item types.
/// </summary>
/// <value>The include item types.</value>
[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 ; }
/// <summary>
2020-06-15 22:37:52 +00:00
/// Filters to apply to the results.
2013-04-11 19:36:50 +00:00
/// </summary>
/// <value>The filters.</value>
2014-05-07 02:28:19 +00:00
[ApiMember(Name = "Filters", Description = "Optional. Specify additional filters to apply. This allows multiple, comma delimeted. Options: IsFolder, IsNotFolder, IsUnplayed, IsPlayed, IsFavorite, IsResumable, Likes, Dislikes", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
2013-04-11 19:36:50 +00:00
public string Filters { get ; set ; }
2013-04-24 20:28:42 +00:00
2016-01-12 02:22:52 +00:00
/// <summary>
2020-06-15 22:37:52 +00:00
/// Gets or sets the Isfavorite option.
2016-01-12 02:22:52 +00:00
/// </summary>
/// <value>IsFavorite</value>
[ApiMember(Name = "IsFavorite", Description = "Optional filter by items that are marked as favorite, or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool? IsFavorite { get ; set ; }
2013-04-24 20:28:42 +00:00
/// <summary>
/// Gets or sets the media types.
/// </summary>
/// <value>The media types.</value>
[ApiMember(Name = "MediaTypes", Description = "Optional filter by MediaType. Allows multiple, comma delimited.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string MediaTypes { get ; set ; }
2013-09-06 05:13:43 +00:00
/// <summary>
/// Gets or sets the image types.
/// </summary>
/// <value>The image types.</value>
[ApiMember(Name = "ImageTypes", Description = "Optional. If specified, results will be filtered based on those containing image types. This allows multiple, comma delimited.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string ImageTypes { get ; set ; }
2013-09-10 19:57:38 +00:00
/// <summary>
2020-06-15 22:37:52 +00:00
/// What to sort the results by.
2013-09-10 19:57:38 +00:00
/// </summary>
/// <value>The sort by.</value>
[ApiMember(Name = "SortBy", Description = "Optional. Specify one or more sort orders, comma delimeted. Options: Album, AlbumArtist, Artist, Budget, CommunityRating, CriticRating, DateCreated, DatePlayed, PlayCount, PremiereDate, ProductionYear, SortName, Random, Revenue, Runtime", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string SortBy { get ; set ; }
2014-01-19 19:25:29 +00:00
[ApiMember(Name = "IsPlayed", Description = "Optional filter by items that are played, or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool? IsPlayed { get ; set ; }
2014-11-10 04:20:11 +00:00
/// <summary>
2020-06-15 22:37:52 +00:00
/// Limit results to items containing specific genres.
2014-11-10 04:20:11 +00:00
/// </summary>
/// <value>The genres.</value>
[ApiMember(Name = "Genres", Description = "Optional. If specified, results will be filtered based on genre. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string Genres { get ; set ; }
2015-11-06 15:02:22 +00:00
public string GenreIds { get ; set ; }
2019-01-07 23:27:46 +00:00
2014-11-10 04:20:11 +00:00
[ApiMember(Name = "OfficialRatings", Description = "Optional. If specified, results will be filtered based on OfficialRating. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string OfficialRatings { get ; set ; }
[ApiMember(Name = "Tags", Description = "Optional. If specified, results will be filtered based on tag. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string Tags { get ; set ; }
/// <summary>
2020-06-15 22:37:52 +00:00
/// Limit results to items containing specific years.
2014-11-10 04:20:11 +00:00
/// </summary>
/// <value>The years.</value>
[ApiMember(Name = "Years", Description = "Optional. If specified, results will be filtered based on production year. This allows multiple, comma delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string Years { get ; set ; }
2014-11-30 19:01:33 +00:00
[ApiMember(Name = "EnableImages", Description = "Optional, include image information in output", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "GET")]
2014-12-01 12:43:34 +00:00
public bool? EnableImages { get ; set ; }
2014-11-30 19:01:33 +00:00
2016-08-17 19:28:43 +00:00
[ApiMember(Name = "EnableUserData", Description = "Optional, include user data", IsRequired = false, DataType = "boolean", ParameterType = "query", Verb = "GET")]
public bool? EnableUserData { get ; set ; }
2014-11-30 19:01:33 +00:00
[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 ; }
2015-07-27 19:16:30 +00:00
/// <summary>
2020-06-15 22:37:52 +00:00
/// Limit results to items containing a specific person.
2015-07-27 19:16:30 +00:00
/// </summary>
/// <value>The person.</value>
[ApiMember(Name = "Person", Description = "Optional. If specified, results will be filtered to include only those containing the specified person.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string Person { get ; set ; }
[ApiMember(Name = "PersonIds", Description = "Optional. If specified, results will be filtered to include only those containing the specified person.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string PersonIds { get ; set ; }
/// <summary>
2020-06-15 22:37:52 +00:00
/// If the Person filter is used, this can also be used to restrict to a specific person type.
2015-07-27 19:16:30 +00:00
/// </summary>
/// <value>The type of the person.</value>
[ApiMember(Name = "PersonTypes", Description = "Optional. If specified, along with Person, results will be filtered to include only those containing the specified person and PersonType. Allows multiple, comma-delimited", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string PersonTypes { get ; set ; }
/// <summary>
2020-06-15 22:37:52 +00:00
/// Limit results to items containing specific studios.
2015-07-27 19:16:30 +00:00
/// </summary>
/// <value>The studios.</value>
[ApiMember(Name = "Studios", Description = "Optional. If specified, results will be filtered based on studio. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string Studios { get ; set ; }
[ApiMember(Name = "StudioIds", Description = "Optional. If specified, results will be filtered based on studio. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string StudioIds { get ; set ; }
/// <summary>
/// Gets or sets the studios.
/// </summary>
/// <value>The studios.</value>
[ApiMember(Name = "Artists", Description = "Optional. If specified, results will be filtered based on artist. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string Artists { get ; set ; }
2016-07-22 22:10:39 +00:00
public string ExcludeArtistIds { get ; set ; }
2016-07-22 17:54:43 +00:00
2015-07-27 19:16:30 +00:00
[ApiMember(Name = "ArtistIds", Description = "Optional. If specified, results will be filtered based on artist. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string ArtistIds { get ; set ; }
2018-09-12 17:26:21 +00:00
public string AlbumArtistIds { get ; set ; }
public string ContributingArtistIds { get ; set ; }
2015-07-27 19:16:30 +00:00
[ApiMember(Name = "Albums", Description = "Optional. If specified, results will be filtered based on album. This allows multiple, pipe delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string Albums { get ; set ; }
2017-02-18 08:32:17 +00:00
public string AlbumIds { get ; set ; }
2015-07-27 19:16:30 +00:00
/// <summary>
/// Gets or sets the item ids.
/// </summary>
/// <value>The item ids.</value>
[ApiMember(Name = "Ids", Description = "Optional. If specific items are needed, specify a list of item id's to retrieve. This allows multiple, comma delimited.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string Ids { get ; set ; }
/// <summary>
/// Gets or sets the video types.
/// </summary>
/// <value>The video types.</value>
[ApiMember(Name = "VideoTypes", Description = "Optional filter by VideoType (videofile, dvd, bluray, iso). Allows multiple, comma delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string VideoTypes { get ; set ; }
/// <summary>
/// Gets or sets the user id.
/// </summary>
/// <value>The user id.</value>
2018-09-12 17:26:21 +00:00
[ApiMember(Name = "UserId", Description = "User Id", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public Guid UserId { get ; set ; }
2015-07-27 19:16:30 +00:00
/// <summary>
/// Gets or sets the min offical rating.
/// </summary>
/// <value>The min offical rating.</value>
[ApiMember(Name = "MinOfficialRating", Description = "Optional filter by minimum official rating (PG, PG-13, TV-MA, etc).", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string MinOfficialRating { get ; set ; }
[ApiMember(Name = "IsLocked", Description = "Optional filter by items that are locked.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public bool? IsLocked { get ; set ; }
[ApiMember(Name = "IsPlaceHolder", Description = "Optional filter by items that are placeholders", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public bool? IsPlaceHolder { get ; set ; }
[ApiMember(Name = "HasOfficialRating", Description = "Optional filter by items that have official ratings", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public bool? HasOfficialRating { get ; set ; }
[ApiMember(Name = "CollapseBoxSetItems", Description = "Whether or not to hide items behind their boxsets.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool? CollapseBoxSetItems { get ; set ; }
2018-09-12 17:26:21 +00:00
public int? MinWidth { get ; set ; }
2020-06-15 21:43:52 +00:00
2018-09-12 17:26:21 +00:00
public int? MinHeight { get ; set ; }
2020-06-15 21:43:52 +00:00
2018-09-12 17:26:21 +00:00
public int? MaxWidth { get ; set ; }
2020-06-15 21:43:52 +00:00
2018-09-12 17:26:21 +00:00
public int? MaxHeight { get ; set ; }
2015-07-27 19:16:30 +00:00
/// <summary>
/// Gets or sets the video formats.
/// </summary>
/// <value>The video formats.</value>
[ApiMember(Name = "Is3D", Description = "Optional filter by items that are 3D, or not.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
public bool? Is3D { get ; set ; }
/// <summary>
/// Gets or sets the series status.
/// </summary>
/// <value>The series status.</value>
[ApiMember(Name = "SeriesStatus", Description = "Optional filter by Series Status. Allows multiple, comma delimeted.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET", AllowMultiple = true)]
public string SeriesStatus { 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 ; }
[ApiMember(Name = "NameStartsWith", Description = "Optional filter by items whose name is sorted equally than a given input string.", IsRequired = false, DataType = "string", ParameterType = "query", Verb = "GET")]
public string NameStartsWith { get ; set ; }
[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 ; }
2014-11-10 04:20:11 +00:00
public string [ ] GetGenres ( )
{
return ( Genres ? ? string . Empty ) . Split ( new [ ] { '|' } , StringSplitOptions . RemoveEmptyEntries ) ;
}
public string [ ] GetTags ( )
{
return ( Tags ? ? string . Empty ) . Split ( new [ ] { '|' } , StringSplitOptions . RemoveEmptyEntries ) ;
}
public string [ ] GetOfficialRatings ( )
{
return ( OfficialRatings ? ? string . Empty ) . Split ( new [ ] { '|' } , StringSplitOptions . RemoveEmptyEntries ) ;
}
2014-10-06 23:58:46 +00:00
public string [ ] GetMediaTypes ( )
{
return ( MediaTypes ? ? string . Empty ) . Split ( new [ ] { ',' } , StringSplitOptions . RemoveEmptyEntries ) ;
}
public string [ ] GetIncludeItemTypes ( )
{
return ( IncludeItemTypes ? ? string . Empty ) . Split ( new [ ] { ',' } , StringSplitOptions . RemoveEmptyEntries ) ;
2016-07-22 05:38:01 +00:00
}
2014-10-06 23:58:46 +00:00
public string [ ] GetExcludeItemTypes ( )
{
return ( ExcludeItemTypes ? ? string . Empty ) . Split ( new [ ] { ',' } , StringSplitOptions . RemoveEmptyEntries ) ;
}
2014-11-10 04:20:11 +00:00
public int [ ] GetYears ( )
{
return ( Years ? ? string . Empty ) . Split ( new [ ] { ',' } , StringSplitOptions . RemoveEmptyEntries ) . Select ( int . Parse ) . ToArray ( ) ;
}
2015-07-27 19:16:30 +00:00
public string [ ] GetStudios ( )
{
return ( Studios ? ? string . Empty ) . Split ( new [ ] { '|' } , StringSplitOptions . RemoveEmptyEntries ) ;
}
public string [ ] GetPersonTypes ( )
{
return ( PersonTypes ? ? string . Empty ) . Split ( new [ ] { ',' } , StringSplitOptions . RemoveEmptyEntries ) ;
}
public VideoType [ ] GetVideoTypes ( )
{
2020-04-05 18:44:14 +00:00
return string . IsNullOrEmpty ( VideoTypes )
? Array . Empty < VideoType > ( )
: VideoTypes . Split ( new [ ] { ',' } , StringSplitOptions . RemoveEmptyEntries )
2020-04-05 21:58:39 +00:00
. Select ( v = > Enum . Parse < VideoType > ( v , true ) ) . ToArray ( ) ;
2015-07-27 19:16:30 +00:00
}
2019-01-07 23:27:46 +00:00
2013-04-11 19:36:50 +00:00
/// <summary>
/// Gets the filters.
/// </summary>
/// <returns>IEnumerable{ItemFilter}.</returns>
2017-08-19 19:43:35 +00:00
public ItemFilter [ ] GetFilters ( )
2013-04-11 19:36:50 +00:00
{
var val = Filters ;
2020-04-05 18:44:14 +00:00
return string . IsNullOrEmpty ( val )
2020-04-05 21:58:39 +00:00
? Array . Empty < ItemFilter > ( )
2020-04-07 03:17:49 +00:00
: val . Split ( new [ ] { ',' } , StringSplitOptions . RemoveEmptyEntries )
. Select ( v = > Enum . Parse < ItemFilter > ( v , true ) ) . ToArray ( ) ;
2013-04-11 19:36:50 +00:00
}
2013-09-06 05:13:43 +00:00
/// <summary>
/// Gets the image types.
/// </summary>
/// <returns>IEnumerable{ImageType}.</returns>
2017-08-09 19:56:38 +00:00
public ImageType [ ] GetImageTypes ( )
2013-09-06 05:13:43 +00:00
{
var val = ImageTypes ;
2020-04-05 18:44:14 +00:00
return string . IsNullOrEmpty ( val )
2020-04-06 03:12:25 +00:00
? Array . Empty < ImageType > ( )
2020-04-05 21:58:39 +00:00
: val . Split ( ',' ) . Select ( v = > Enum . Parse < ImageType > ( v , true ) ) . ToArray ( ) ;
2013-09-06 05:13:43 +00:00
}
2013-09-10 19:57:38 +00:00
/// <summary>
/// Gets the order by.
/// </summary>
/// <returns>IEnumerable{ItemSortBy}.</returns>
2018-09-12 17:26:21 +00:00
public ValueTuple < string , SortOrder > [ ] GetOrderBy ( )
2013-09-10 19:57:38 +00:00
{
2017-09-04 19:28:22 +00:00
return GetOrderBy ( SortBy , SortOrder ) ;
}
2018-09-12 17:26:21 +00:00
public static ValueTuple < string , SortOrder > [ ] GetOrderBy ( string sortBy , string requestedSortOrder )
2017-09-04 19:28:22 +00:00
{
var val = sortBy ;
2013-09-10 19:57:38 +00:00
if ( string . IsNullOrEmpty ( val ) )
{
2019-01-13 20:37:13 +00:00
return Array . Empty < ValueTuple < string , SortOrder > > ( ) ;
2017-09-04 19:28:22 +00:00
}
var vals = val . Split ( ',' ) ;
if ( string . IsNullOrWhiteSpace ( requestedSortOrder ) )
{
requestedSortOrder = "Ascending" ;
}
var sortOrders = requestedSortOrder . Split ( ',' ) ;
2019-01-13 20:37:13 +00:00
var result = new ValueTuple < string , SortOrder > [ vals . Length ] ;
2017-09-04 19:28:22 +00:00
for ( var i = 0 ; i < vals . Length ; i + + )
{
var sortOrderIndex = sortOrders . Length > i ? i : 0 ;
var sortOrderValue = sortOrders . Length > sortOrderIndex ? sortOrders [ sortOrderIndex ] : null ;
2020-04-05 21:58:39 +00:00
var sortOrder = string . Equals ( sortOrderValue , "Descending" , StringComparison . OrdinalIgnoreCase )
? MediaBrowser . Model . Entities . SortOrder . Descending
: MediaBrowser . Model . Entities . SortOrder . Ascending ;
2017-09-04 19:28:22 +00:00
2019-01-13 20:37:13 +00:00
result [ i ] = new ValueTuple < string , SortOrder > ( vals [ i ] , sortOrder ) ;
2013-09-10 19:57:38 +00:00
}
2017-09-04 19:28:22 +00:00
return result ;
2013-09-10 19:57:38 +00:00
}
2013-03-11 05:06:55 +00:00
}
}