You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.9 KiB
55 lines
1.9 KiB
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Lidarr.Http;
|
|
using Lidarr.Http.REST;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using NzbDrone.Core.CustomFormats;
|
|
using NzbDrone.Core.DecisionEngine.Specifications;
|
|
using NzbDrone.Core.Music;
|
|
using NzbDrone.SignalR;
|
|
|
|
namespace Lidarr.Api.V1.Tracks
|
|
{
|
|
[V1ApiController]
|
|
public class TrackController : TrackControllerWithSignalR
|
|
{
|
|
public TrackController(IArtistService artistService,
|
|
ITrackService trackService,
|
|
IUpgradableSpecification upgradableSpecification,
|
|
ICustomFormatCalculationService formatCalculator,
|
|
IBroadcastSignalRMessage signalRBroadcaster)
|
|
: base(trackService, artistService, upgradableSpecification, formatCalculator, signalRBroadcaster)
|
|
{
|
|
}
|
|
|
|
[HttpGet]
|
|
public List<TrackResource> GetTracks([FromQuery]int? artistId,
|
|
[FromQuery]int? albumId,
|
|
[FromQuery]int? albumReleaseId,
|
|
[FromQuery]List<int> trackIds)
|
|
{
|
|
if (!artistId.HasValue && !trackIds.Any() && !albumId.HasValue && !albumReleaseId.HasValue)
|
|
{
|
|
throw new BadRequestException("One of artistId, albumId, albumReleaseId or trackIds must be provided");
|
|
}
|
|
|
|
if (artistId.HasValue && !albumId.HasValue)
|
|
{
|
|
return MapToResource(_trackService.GetTracksByArtist(artistId.Value), false, false);
|
|
}
|
|
|
|
if (albumReleaseId.HasValue)
|
|
{
|
|
return MapToResource(_trackService.GetTracksByRelease(albumReleaseId.Value), false, false);
|
|
}
|
|
|
|
if (albumId.HasValue)
|
|
{
|
|
return MapToResource(_trackService.GetTracksByAlbum(albumId.Value), false, false);
|
|
}
|
|
|
|
return MapToResource(_trackService.GetTracks(trackIds), false, false);
|
|
}
|
|
}
|
|
}
|