aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Jellyfin.Api/Controllers/LiveTvController.cs14
-rw-r--r--Jellyfin.Api/Models/LiveTvDtos/GetProgramsDto.cs43
2 files changed, 19 insertions, 38 deletions
diff --git a/Jellyfin.Api/Controllers/LiveTvController.cs b/Jellyfin.Api/Controllers/LiveTvController.cs
index 2b26c01f8..0cf36f57e 100644
--- a/Jellyfin.Api/Controllers/LiveTvController.cs
+++ b/Jellyfin.Api/Controllers/LiveTvController.cs
@@ -656,7 +656,7 @@ public class LiveTvController : BaseJellyfinApiController
var query = new InternalItemsQuery(user)
{
- ChannelIds = body.ChannelIds,
+ ChannelIds = body.ChannelIds ?? [],
HasAired = body.HasAired,
IsAiring = body.IsAiring,
EnableTotalRecordCount = body.EnableTotalRecordCount,
@@ -666,22 +666,22 @@ public class LiveTvController : BaseJellyfinApiController
MaxEndDate = body.MaxEndDate,
StartIndex = body.StartIndex,
Limit = body.Limit,
- OrderBy = RequestHelpers.GetOrderBy(body.SortBy, body.SortOrder),
+ OrderBy = RequestHelpers.GetOrderBy(body.SortBy ?? [], body.SortOrder ?? []),
IsNews = body.IsNews,
IsMovie = body.IsMovie,
IsSeries = body.IsSeries,
IsKids = body.IsKids,
IsSports = body.IsSports,
SeriesTimerId = body.SeriesTimerId,
- Genres = body.Genres,
- GenreIds = body.GenreIds
+ Genres = body.Genres ?? [],
+ GenreIds = body.GenreIds ?? []
};
- if (!body.LibrarySeriesId.IsEmpty())
+ if (!body.LibrarySeriesId.IsNullOrEmpty())
{
query.IsSeries = true;
- var series = _libraryManager.GetItemById<Series>(body.LibrarySeriesId);
+ var series = _libraryManager.GetItemById<Series>(body.LibrarySeriesId.Value);
if (series is not null)
{
query.Name = series.Name;
@@ -690,7 +690,7 @@ public class LiveTvController : BaseJellyfinApiController
var dtoOptions = new DtoOptions { Fields = body.Fields }
.AddClientFields(User)
- .AddAdditionalDtoOptions(body.EnableImages, body.EnableUserData, body.ImageTypeLimit, body.EnableImageTypes);
+ .AddAdditionalDtoOptions(body.EnableImages, body.EnableUserData, body.ImageTypeLimit, body.EnableImageTypes ?? []);
return await _liveTvManager.GetPrograms(query, dtoOptions, CancellationToken.None).ConfigureAwait(false);
}
diff --git a/Jellyfin.Api/Models/LiveTvDtos/GetProgramsDto.cs b/Jellyfin.Api/Models/LiveTvDtos/GetProgramsDto.cs
index 8482b1cf1..7210cc8f7 100644
--- a/Jellyfin.Api/Models/LiveTvDtos/GetProgramsDto.cs
+++ b/Jellyfin.Api/Models/LiveTvDtos/GetProgramsDto.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.ComponentModel;
using System.Text.Json.Serialization;
using Jellyfin.Data.Enums;
using Jellyfin.Extensions.Json.Converters;
@@ -17,7 +18,7 @@ public class GetProgramsDto
/// Gets or sets the channels to return guide information for.
/// </summary>
[JsonConverter(typeof(JsonCommaDelimitedArrayConverterFactory))]
- public IReadOnlyList<Guid> ChannelIds { get; set; } = Array.Empty<Guid>();
+ public IReadOnlyList<Guid>? ChannelIds { get; set; }
/// <summary>
/// Gets or sets optional. Filter by user id.
@@ -26,153 +27,133 @@ public class GetProgramsDto
/// <summary>
/// Gets or sets the minimum premiere start date.
- /// Optional.
/// </summary>
public DateTime? MinStartDate { get; set; }
/// <summary>
/// Gets or sets filter by programs that have completed airing, or not.
- /// Optional.
/// </summary>
public bool? HasAired { get; set; }
/// <summary>
/// Gets or sets filter by programs that are currently airing, or not.
- /// Optional.
/// </summary>
public bool? IsAiring { get; set; }
/// <summary>
/// Gets or sets the maximum premiere start date.
- /// Optional.
/// </summary>
public DateTime? MaxStartDate { get; set; }
/// <summary>
/// Gets or sets the minimum premiere end date.
- /// Optional.
/// </summary>
public DateTime? MinEndDate { get; set; }
/// <summary>
/// Gets or sets the maximum premiere end date.
- /// Optional.
/// </summary>
public DateTime? MaxEndDate { get; set; }
/// <summary>
/// Gets or sets filter for movies.
- /// Optional.
/// </summary>
public bool? IsMovie { get; set; }
/// <summary>
/// Gets or sets filter for series.
- /// Optional.
/// </summary>
public bool? IsSeries { get; set; }
/// <summary>
/// Gets or sets filter for news.
- /// Optional.
/// </summary>
public bool? IsNews { get; set; }
/// <summary>
/// Gets or sets filter for kids.
- /// Optional.
/// </summary>
public bool? IsKids { get; set; }
/// <summary>
/// Gets or sets filter for sports.
- /// Optional.
/// </summary>
public bool? IsSports { get; set; }
/// <summary>
/// Gets or sets the record index to start at. All items with a lower index will be dropped from the results.
- /// Optional.
/// </summary>
public int? StartIndex { get; set; }
/// <summary>
/// Gets or sets the maximum number of records to return.
- /// Optional.
/// </summary>
public int? Limit { get; set; }
/// <summary>
/// Gets or sets specify one or more sort orders, comma delimited. Options: Name, StartDate.
- /// Optional.
/// </summary>
[JsonConverter(typeof(JsonCommaDelimitedArrayConverterFactory))]
- public IReadOnlyList<ItemSortBy> SortBy { get; set; } = Array.Empty<ItemSortBy>();
+ public IReadOnlyList<ItemSortBy>? SortBy { get; set; }
/// <summary>
- /// Gets or sets sort Order - Ascending,Descending.
+ /// Gets or sets sort order.
/// </summary>
[JsonConverter(typeof(JsonCommaDelimitedArrayConverterFactory))]
- public IReadOnlyList<SortOrder> SortOrder { get; set; } = Array.Empty<SortOrder>();
+ public IReadOnlyList<SortOrder>? SortOrder { get; set; }
/// <summary>
/// Gets or sets the genres to return guide information for.
/// </summary>
[JsonConverter(typeof(JsonPipeDelimitedArrayConverterFactory))]
- public IReadOnlyList<string> Genres { get; set; } = Array.Empty<string>();
+ public IReadOnlyList<string>? Genres { get; set; }
/// <summary>
/// Gets or sets the genre ids to return guide information for.
/// </summary>
[JsonConverter(typeof(JsonCommaDelimitedArrayConverterFactory))]
- public IReadOnlyList<Guid> GenreIds { get; set; } = Array.Empty<Guid>();
+ public IReadOnlyList<Guid>? GenreIds { get; set; }
/// <summary>
/// Gets or sets include image information in output.
- /// Optional.
/// </summary>
public bool? EnableImages { get; set; }
/// <summary>
/// Gets or sets a value indicating whether retrieve total record count.
/// </summary>
+ [DefaultValue(true)]
public bool EnableTotalRecordCount { get; set; } = true;
/// <summary>
/// Gets or sets the max number of images to return, per image type.
- /// Optional.
/// </summary>
public int? ImageTypeLimit { get; set; }
/// <summary>
/// Gets or sets the image types to include in the output.
- /// Optional.
/// </summary>
[JsonConverter(typeof(JsonCommaDelimitedArrayConverterFactory))]
- public IReadOnlyList<ImageType> EnableImageTypes { get; set; } = Array.Empty<ImageType>();
+ public IReadOnlyList<ImageType>? EnableImageTypes { get; set; }
/// <summary>
/// Gets or sets include user data.
- /// Optional.
/// </summary>
public bool? EnableUserData { get; set; }
/// <summary>
/// Gets or sets filter by series timer id.
- /// Optional.
/// </summary>
public string? SeriesTimerId { get; set; }
/// <summary>
/// Gets or sets filter by library series id.
- /// Optional.
/// </summary>
- public Guid LibrarySeriesId { get; set; }
+ public Guid? LibrarySeriesId { get; set; }
/// <summary>
- /// Gets or sets specify additional fields of information to return in the output. This allows multiple, comma delimited. Options: Budget, Chapters, DateCreated, Genres, HomePageUrl, IndexOptions, MediaStreams, Overview, ParentId, Path, People, ProviderIds, PrimaryImageAspectRatio, Revenue, SortName, Studios, Taglines.
- /// Optional.
+ /// Gets or sets specify additional fields of information to return in the output.
/// </summary>
[JsonConverter(typeof(JsonCommaDelimitedArrayConverterFactory))]
- public IReadOnlyList<ItemFields> Fields { get; set; } = Array.Empty<ItemFields>();
+ public IReadOnlyList<ItemFields>? Fields { get; set; }
}