mirror of
https://github.com/jellyfin/jellyfin.git
synced 2025-12-16 05:53:03 +03:00
Make query parameters nullable or set default value
This commit is contained in:
@@ -113,7 +113,6 @@ namespace Jellyfin.Api.Controllers
|
||||
/// <param name="isFavorite">Optional. Filter by channels that are favorites, or not.</param>
|
||||
/// <param name="isLiked">Optional. Filter by channels that are liked, or not.</param>
|
||||
/// <param name="isDisliked">Optional. Filter by channels that are disliked, or not.</param>
|
||||
/// <param name="enableFavoriteSorting">Optional. Incorporate favorite and like status into channel sorting.</param>
|
||||
/// <param name="enableImages">Optional. Include image information in output.</param>
|
||||
/// <param name="imageTypeLimit">Optional. The max number of images to return, per image type.</param>
|
||||
/// <param name="enableImageTypes">"Optional. The image types to include in the output.</param>
|
||||
@@ -121,6 +120,7 @@ namespace Jellyfin.Api.Controllers
|
||||
/// <param name="enableUserData">Optional. Include user data.</param>
|
||||
/// <param name="sortBy">Optional. Key to sort by.</param>
|
||||
/// <param name="sortOrder">Optional. Sort order.</param>
|
||||
/// <param name="enableFavoriteSorting">Optional. Incorporate favorite and like status into channel sorting.</param>
|
||||
/// <param name="addCurrentProgram">Optional. Adds current program info to each channel.</param>
|
||||
/// <response code="200">Available live tv channels returned.</response>
|
||||
/// <returns>
|
||||
@@ -131,7 +131,7 @@ namespace Jellyfin.Api.Controllers
|
||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||
public ActionResult<QueryResult<BaseItemDto>> GetChannels(
|
||||
[FromQuery] ChannelType? type,
|
||||
[FromQuery] Guid userId,
|
||||
[FromQuery] Guid? userId,
|
||||
[FromQuery] int? startIndex,
|
||||
[FromQuery] bool? isMovie,
|
||||
[FromQuery] bool? isSeries,
|
||||
@@ -142,14 +142,14 @@ namespace Jellyfin.Api.Controllers
|
||||
[FromQuery] bool? isFavorite,
|
||||
[FromQuery] bool? isLiked,
|
||||
[FromQuery] bool? isDisliked,
|
||||
[FromQuery] bool enableFavoriteSorting,
|
||||
[FromQuery] bool? enableImages,
|
||||
[FromQuery] int? imageTypeLimit,
|
||||
[FromQuery] string enableImageTypes,
|
||||
[FromQuery] string fields,
|
||||
[FromQuery] string? enableImageTypes,
|
||||
[FromQuery] string? fields,
|
||||
[FromQuery] bool? enableUserData,
|
||||
[FromQuery] string sortBy,
|
||||
[FromQuery] string? sortBy,
|
||||
[FromQuery] SortOrder? sortOrder,
|
||||
[FromQuery] bool enableFavoriteSorting = false,
|
||||
[FromQuery] bool addCurrentProgram = true)
|
||||
{
|
||||
var dtoOptions = new DtoOptions()
|
||||
@@ -161,7 +161,7 @@ namespace Jellyfin.Api.Controllers
|
||||
new LiveTvChannelQuery
|
||||
{
|
||||
ChannelType = type,
|
||||
UserId = userId,
|
||||
UserId = userId ?? Guid.Empty,
|
||||
StartIndex = startIndex,
|
||||
Limit = limit,
|
||||
IsFavorite = isFavorite,
|
||||
@@ -180,9 +180,9 @@ namespace Jellyfin.Api.Controllers
|
||||
dtoOptions,
|
||||
CancellationToken.None);
|
||||
|
||||
var user = userId.Equals(Guid.Empty)
|
||||
? null
|
||||
: _userManager.GetUserById(userId);
|
||||
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
||||
? _userManager.GetUserById(userId.Value)
|
||||
: null;
|
||||
|
||||
var fieldsList = dtoOptions.Fields.ToList();
|
||||
fieldsList.Remove(ItemFields.CanDelete);
|
||||
@@ -210,9 +210,11 @@ namespace Jellyfin.Api.Controllers
|
||||
[HttpGet("Channels/{channelId}")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||
public ActionResult<BaseItemDto> GetChannel([FromRoute] Guid channelId, [FromQuery] Guid userId)
|
||||
public ActionResult<BaseItemDto> GetChannel([FromRoute] Guid channelId, [FromQuery] Guid? userId)
|
||||
{
|
||||
var user = _userManager.GetUserById(userId);
|
||||
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
||||
? _userManager.GetUserById(userId.Value)
|
||||
: null;
|
||||
var item = channelId.Equals(Guid.Empty)
|
||||
? _libraryManager.GetUserRootFolder()
|
||||
: _libraryManager.GetItemById(channelId);
|
||||
@@ -250,17 +252,17 @@ namespace Jellyfin.Api.Controllers
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||
public ActionResult<QueryResult<BaseItemDto>> GetRecordings(
|
||||
[FromQuery] string channelId,
|
||||
[FromQuery] Guid userId,
|
||||
[FromQuery] string? channelId,
|
||||
[FromQuery] Guid? userId,
|
||||
[FromQuery] int? startIndex,
|
||||
[FromQuery] int? limit,
|
||||
[FromQuery] RecordingStatus? status,
|
||||
[FromQuery] bool? isInProgress,
|
||||
[FromQuery] string seriesTimerId,
|
||||
[FromQuery] string? seriesTimerId,
|
||||
[FromQuery] bool? enableImages,
|
||||
[FromQuery] int? imageTypeLimit,
|
||||
[FromQuery] string enableImageTypes,
|
||||
[FromQuery] string fields,
|
||||
[FromQuery] string? enableImageTypes,
|
||||
[FromQuery] string? fields,
|
||||
[FromQuery] bool? enableUserData,
|
||||
[FromQuery] bool? isMovie,
|
||||
[FromQuery] bool? isSeries,
|
||||
@@ -279,7 +281,7 @@ namespace Jellyfin.Api.Controllers
|
||||
new RecordingQuery
|
||||
{
|
||||
ChannelId = channelId,
|
||||
UserId = userId,
|
||||
UserId = userId ?? Guid.Empty,
|
||||
StartIndex = startIndex,
|
||||
Limit = limit,
|
||||
Status = status,
|
||||
@@ -336,18 +338,18 @@ namespace Jellyfin.Api.Controllers
|
||||
[SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "enableUserData", Justification = "Imported from ServiceStack")]
|
||||
[SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "enableTotalRecordCount", Justification = "Imported from ServiceStack")]
|
||||
public ActionResult<QueryResult<BaseItemDto>> GetRecordingsSeries(
|
||||
[FromQuery] string channelId,
|
||||
[FromQuery] Guid userId,
|
||||
[FromQuery] string groupId,
|
||||
[FromQuery] string? channelId,
|
||||
[FromQuery] Guid? userId,
|
||||
[FromQuery] string? groupId,
|
||||
[FromQuery] int? startIndex,
|
||||
[FromQuery] int? limit,
|
||||
[FromQuery] RecordingStatus? status,
|
||||
[FromQuery] bool? isInProgress,
|
||||
[FromQuery] string seriesTimerId,
|
||||
[FromQuery] string? seriesTimerId,
|
||||
[FromQuery] bool? enableImages,
|
||||
[FromQuery] int? imageTypeLimit,
|
||||
[FromQuery] string enableImageTypes,
|
||||
[FromQuery] string fields,
|
||||
[FromQuery] string? enableImageTypes,
|
||||
[FromQuery] string? fields,
|
||||
[FromQuery] bool? enableUserData,
|
||||
[FromQuery] bool enableTotalRecordCount = true)
|
||||
{
|
||||
@@ -365,7 +367,7 @@ namespace Jellyfin.Api.Controllers
|
||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||
[Obsolete("This endpoint is obsolete.")]
|
||||
[SuppressMessage("Microsoft.Performance", "CA1801:ReviewUnusedParameters", MessageId = "userId", Justification = "Imported from ServiceStack")]
|
||||
public ActionResult<QueryResult<BaseItemDto>> GetRecordingGroups([FromQuery] Guid userId)
|
||||
public ActionResult<QueryResult<BaseItemDto>> GetRecordingGroups([FromQuery] Guid? userId)
|
||||
{
|
||||
return new QueryResult<BaseItemDto>();
|
||||
}
|
||||
@@ -379,9 +381,11 @@ namespace Jellyfin.Api.Controllers
|
||||
[HttpGet("Recordings/Folders")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||
public ActionResult<QueryResult<BaseItemDto>> GetRecordingFolders([FromQuery] Guid userId)
|
||||
public ActionResult<QueryResult<BaseItemDto>> GetRecordingFolders([FromQuery] Guid? userId)
|
||||
{
|
||||
var user = userId.Equals(Guid.Empty) ? null : _userManager.GetUserById(userId);
|
||||
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
||||
? _userManager.GetUserById(userId.Value)
|
||||
: null;
|
||||
var folders = _liveTvManager.GetRecordingFolders(user);
|
||||
|
||||
var returnArray = _dtoService.GetBaseItemDtos(folders, new DtoOptions(), user);
|
||||
@@ -403,9 +407,11 @@ namespace Jellyfin.Api.Controllers
|
||||
[HttpGet("Recordings/{recordingId}")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||
public ActionResult<BaseItemDto> GetRecording([FromRoute] Guid recordingId, [FromQuery] Guid userId)
|
||||
public ActionResult<BaseItemDto> GetRecording([FromRoute] Guid recordingId, [FromQuery] Guid? userId)
|
||||
{
|
||||
var user = _userManager.GetUserById(userId);
|
||||
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
||||
? _userManager.GetUserById(userId.Value)
|
||||
: null;
|
||||
var item = recordingId.Equals(Guid.Empty) ? _libraryManager.GetUserRootFolder() : _libraryManager.GetItemById(recordingId);
|
||||
|
||||
var dtoOptions = new DtoOptions()
|
||||
@@ -457,7 +463,7 @@ namespace Jellyfin.Api.Controllers
|
||||
[HttpGet("Timers/Defaults")]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||
public async Task<ActionResult<SeriesTimerInfoDto>> GetDefaultTimer([FromQuery] string programId)
|
||||
public async Task<ActionResult<SeriesTimerInfoDto>> GetDefaultTimer([FromQuery] string? programId)
|
||||
{
|
||||
return string.IsNullOrEmpty(programId)
|
||||
? await _liveTvManager.GetNewTimerDefaults(CancellationToken.None).ConfigureAwait(false)
|
||||
@@ -478,8 +484,8 @@ namespace Jellyfin.Api.Controllers
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||
public async Task<ActionResult<QueryResult<TimerInfoDto>>> GetTimers(
|
||||
[FromQuery] string channelId,
|
||||
[FromQuery] string seriesTimerId,
|
||||
[FromQuery] string? channelId,
|
||||
[FromQuery] string? seriesTimerId,
|
||||
[FromQuery] bool? isActive,
|
||||
[FromQuery] bool? isScheduled)
|
||||
{
|
||||
@@ -532,8 +538,8 @@ namespace Jellyfin.Api.Controllers
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||
public async Task<ActionResult<QueryResult<BaseItemDto>>> GetPrograms(
|
||||
[FromQuery] string channelIds,
|
||||
[FromQuery] Guid userId,
|
||||
[FromQuery] string? channelIds,
|
||||
[FromQuery] Guid? userId,
|
||||
[FromQuery] DateTime? minStartDate,
|
||||
[FromQuery] bool? hasAired,
|
||||
[FromQuery] bool? isAiring,
|
||||
@@ -547,20 +553,22 @@ namespace Jellyfin.Api.Controllers
|
||||
[FromQuery] bool? isSports,
|
||||
[FromQuery] int? startIndex,
|
||||
[FromQuery] int? limit,
|
||||
[FromQuery] string sortBy,
|
||||
[FromQuery] string sortOrder,
|
||||
[FromQuery] string genres,
|
||||
[FromQuery] string genreIds,
|
||||
[FromQuery] string? sortBy,
|
||||
[FromQuery] string? sortOrder,
|
||||
[FromQuery] string? genres,
|
||||
[FromQuery] string? genreIds,
|
||||
[FromQuery] bool? enableImages,
|
||||
[FromQuery] int? imageTypeLimit,
|
||||
[FromQuery] string enableImageTypes,
|
||||
[FromQuery] string? enableImageTypes,
|
||||
[FromQuery] bool? enableUserData,
|
||||
[FromQuery] string seriesTimerId,
|
||||
[FromQuery] Guid librarySeriesId,
|
||||
[FromQuery] string fields,
|
||||
[FromQuery] string? seriesTimerId,
|
||||
[FromQuery] Guid? librarySeriesId,
|
||||
[FromQuery] string? fields,
|
||||
[FromQuery] bool enableTotalRecordCount = true)
|
||||
{
|
||||
var user = userId.Equals(Guid.Empty) ? null : _userManager.GetUserById(userId);
|
||||
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
||||
? _userManager.GetUserById(userId.Value)
|
||||
: null;
|
||||
|
||||
var query = new InternalItemsQuery(user)
|
||||
{
|
||||
@@ -590,7 +598,7 @@ namespace Jellyfin.Api.Controllers
|
||||
{
|
||||
query.IsSeries = true;
|
||||
|
||||
if (_libraryManager.GetItemById(librarySeriesId) is Series series)
|
||||
if (_libraryManager.GetItemById(librarySeriesId ?? Guid.Empty) is Series series)
|
||||
{
|
||||
query.Name = series.Name;
|
||||
}
|
||||
@@ -684,7 +692,7 @@ namespace Jellyfin.Api.Controllers
|
||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
public ActionResult<QueryResult<BaseItemDto>> GetRecommendedPrograms(
|
||||
[FromQuery] Guid userId,
|
||||
[FromQuery] Guid? userId,
|
||||
[FromQuery] int? limit,
|
||||
[FromQuery] bool? isAiring,
|
||||
[FromQuery] bool? hasAired,
|
||||
@@ -695,13 +703,15 @@ namespace Jellyfin.Api.Controllers
|
||||
[FromQuery] bool? isSports,
|
||||
[FromQuery] bool? enableImages,
|
||||
[FromQuery] int? imageTypeLimit,
|
||||
[FromQuery] string enableImageTypes,
|
||||
[FromQuery] string genreIds,
|
||||
[FromQuery] string fields,
|
||||
[FromQuery] string? enableImageTypes,
|
||||
[FromQuery] string? genreIds,
|
||||
[FromQuery] string? fields,
|
||||
[FromQuery] bool? enableUserData,
|
||||
[FromQuery] bool enableTotalRecordCount = true)
|
||||
{
|
||||
var user = _userManager.GetUserById(userId);
|
||||
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
||||
? _userManager.GetUserById(userId.Value)
|
||||
: null;
|
||||
|
||||
var query = new InternalItemsQuery(user)
|
||||
{
|
||||
@@ -736,11 +746,11 @@ namespace Jellyfin.Api.Controllers
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<BaseItemDto>> GetProgram(
|
||||
[FromRoute] string programId,
|
||||
[FromQuery] Guid userId)
|
||||
[FromQuery] Guid? userId)
|
||||
{
|
||||
var user = userId.Equals(Guid.Empty)
|
||||
? null
|
||||
: _userManager.GetUserById(userId);
|
||||
var user = userId.HasValue && !userId.Equals(Guid.Empty)
|
||||
? _userManager.GetUserById(userId.Value)
|
||||
: null;
|
||||
|
||||
return await _liveTvManager.GetProgram(programId, CancellationToken.None, user).ConfigureAwait(false);
|
||||
}
|
||||
@@ -856,12 +866,12 @@ namespace Jellyfin.Api.Controllers
|
||||
[HttpGet("SeriesTimers")]
|
||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<QueryResult<SeriesTimerInfoDto>>> GetSeriesTimers([FromQuery] string sortBy, [FromQuery] SortOrder sortOrder)
|
||||
public async Task<ActionResult<QueryResult<SeriesTimerInfoDto>>> GetSeriesTimers([FromQuery] string? sortBy, [FromQuery] SortOrder? sortOrder)
|
||||
{
|
||||
return await _liveTvManager.GetSeriesTimers(
|
||||
new SeriesTimerQuery
|
||||
{
|
||||
SortOrder = sortOrder,
|
||||
SortOrder = sortOrder ?? SortOrder.Ascending,
|
||||
SortBy = sortBy
|
||||
}, CancellationToken.None).ConfigureAwait(false);
|
||||
}
|
||||
@@ -925,7 +935,7 @@ namespace Jellyfin.Api.Controllers
|
||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||
[Obsolete("This endpoint is obsolete.")]
|
||||
public ActionResult<BaseItemDto> GetRecordingGroup([FromQuery] Guid groupId)
|
||||
public ActionResult<BaseItemDto> GetRecordingGroup([FromQuery] Guid? groupId)
|
||||
{
|
||||
return NotFound();
|
||||
}
|
||||
@@ -966,7 +976,7 @@ namespace Jellyfin.Api.Controllers
|
||||
[HttpDelete("TunerHosts")]
|
||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
public ActionResult DeleteTunerHost([FromQuery] string id)
|
||||
public ActionResult DeleteTunerHost([FromQuery] string? id)
|
||||
{
|
||||
var config = _configurationManager.GetConfiguration<LiveTvOptions>("livetv");
|
||||
config.TunerHosts = config.TunerHosts.Where(i => !string.Equals(id, i.Id, StringComparison.OrdinalIgnoreCase)).ToArray();
|
||||
@@ -990,10 +1000,10 @@ namespace Jellyfin.Api.Controllers
|
||||
/// <summary>
|
||||
/// Adds a listings provider.
|
||||
/// </summary>
|
||||
/// <param name="validateLogin">Validate login.</param>
|
||||
/// <param name="validateListings">Validate listings.</param>
|
||||
/// <param name="pw">Password.</param>
|
||||
/// <param name="listingsProviderInfo">New listings info.</param>
|
||||
/// <param name="validateListings">Validate listings.</param>
|
||||
/// <param name="validateLogin">Validate login.</param>
|
||||
/// <response code="200">Created listings provider returned.</response>
|
||||
/// <returns>A <see cref="OkResult"/> containing the created listings provider.</returns>
|
||||
[HttpGet("ListingProviders")]
|
||||
@@ -1001,10 +1011,10 @@ namespace Jellyfin.Api.Controllers
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
[SuppressMessage("Microsoft.Performance", "CA5350:RemoveSha1", MessageId = "AddListingProvider", Justification = "Imported from ServiceStack")]
|
||||
public async Task<ActionResult<ListingsProviderInfo>> AddListingProvider(
|
||||
[FromQuery] bool validateLogin,
|
||||
[FromQuery] bool validateListings,
|
||||
[FromQuery] string pw,
|
||||
[FromBody] ListingsProviderInfo listingsProviderInfo)
|
||||
[FromQuery] string? pw,
|
||||
[FromBody] ListingsProviderInfo listingsProviderInfo,
|
||||
[FromQuery] bool validateListings = false,
|
||||
[FromQuery] bool validateLogin = false)
|
||||
{
|
||||
using var sha = SHA1.Create();
|
||||
if (!string.IsNullOrEmpty(pw))
|
||||
@@ -1024,7 +1034,7 @@ namespace Jellyfin.Api.Controllers
|
||||
[HttpDelete("ListingProviders")]
|
||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||
[ProducesResponseType(StatusCodes.Status204NoContent)]
|
||||
public ActionResult DeleteListingProvider([FromQuery] string id)
|
||||
public ActionResult DeleteListingProvider([FromQuery] string? id)
|
||||
{
|
||||
_liveTvManager.DeleteListingsProvider(id);
|
||||
return NoContent();
|
||||
@@ -1043,10 +1053,10 @@ namespace Jellyfin.Api.Controllers
|
||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<IEnumerable<NameIdPair>>> GetLineups(
|
||||
[FromQuery] string id,
|
||||
[FromQuery] string type,
|
||||
[FromQuery] string location,
|
||||
[FromQuery] string country)
|
||||
[FromQuery] string? id,
|
||||
[FromQuery] string? type,
|
||||
[FromQuery] string? location,
|
||||
[FromQuery] string? country)
|
||||
{
|
||||
return await _liveTvManager.GetLineups(type, id, country, location).ConfigureAwait(false);
|
||||
}
|
||||
@@ -1079,7 +1089,7 @@ namespace Jellyfin.Api.Controllers
|
||||
[HttpGet("ChannelMappingOptions")]
|
||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<ChannelMappingOptionsDto>> GetChannelMappingOptions([FromQuery] string providerId)
|
||||
public async Task<ActionResult<ChannelMappingOptionsDto>> GetChannelMappingOptions([FromQuery] string? providerId)
|
||||
{
|
||||
var config = _configurationManager.GetConfiguration<LiveTvOptions>("livetv");
|
||||
|
||||
@@ -1120,9 +1130,9 @@ namespace Jellyfin.Api.Controllers
|
||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<TunerChannelMapping>> SetChannelMapping(
|
||||
[FromQuery] string providerId,
|
||||
[FromQuery] string tunerChannelId,
|
||||
[FromQuery] string providerChannelId)
|
||||
[FromQuery] string? providerId,
|
||||
[FromQuery] string? tunerChannelId,
|
||||
[FromQuery] string? providerChannelId)
|
||||
{
|
||||
return await _liveTvManager.SetChannelMapping(providerId, tunerChannelId, providerChannelId).ConfigureAwait(false);
|
||||
}
|
||||
@@ -1149,7 +1159,7 @@ namespace Jellyfin.Api.Controllers
|
||||
[HttpGet("Tuners/Discvover")]
|
||||
[Authorize(Policy = Policies.DefaultAuthorization)]
|
||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||
public async Task<ActionResult<IEnumerable<TunerHostInfo>>> DiscoverTuners([FromQuery] bool newDevicesOnly)
|
||||
public async Task<ActionResult<IEnumerable<TunerHostInfo>>> DiscoverTuners([FromQuery] bool newDevicesOnly = false)
|
||||
{
|
||||
return await _liveTvManager.DiscoverTuners(newDevicesOnly, CancellationToken.None).ConfigureAwait(false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user