using Microsoft.AspNetCore.Mvc; namespace Music; public class SearchController : BaseController { [HttpGet] [Route("music/search")] async public Task Search(string q, string provider, bool full = false) { var result = await MusicCatalogService.SearchAsync(q, provider, full); result = MusicImageProxyService.Apply(this, result); return ContentTo(MusicJson.Serialize(result)); } [HttpGet] [Route("music/artist")] async public Task Artist(string id, string provider) { var result = await MusicCatalogService.GetArtistAsync(id, provider); if (result == null) return ContentTo(MusicJson.Serialize(new { available = false, message = "Artist not found." })); result = MusicImageProxyService.Apply(this, result); return ContentTo(MusicJson.Serialize(result)); } [HttpGet] [Route("music/artistsection")] async public Task ArtistSection(string id, string provider, string page, string artist_name, int limit = 20) { var result = await MusicCatalogService.GetArtistSectionAsync(id, provider, page, limit, artist_name); if (result == null) return ContentTo(MusicJson.Serialize(new { available = false, message = "Artist section not found." })); result = MusicImageProxyService.Apply(this, result); return ContentTo(MusicJson.Serialize(result)); } [HttpGet] [Route("music/artistimg")] async public Task ArtistImage(string id, string name, string country, CancellationToken cancellationToken) { if (string.IsNullOrWhiteSpace(name)) return ContentTo(MusicJson.Serialize(new { available = false, id, images = new List() })); var artist = new MusicArtist { id = id, name = name, country = country }; artist.images = await DiscogsArtistImageService.ResolveImagesAsync(artist, cancellationToken) ?? new List(); artist = MusicImageProxyService.Apply(this, artist); return ContentTo(MusicJson.Serialize(new { available = artist.images.Count > 0, id = id, images = artist.images })); } [HttpGet] [Route("music/album")] async public Task Album(string id, string provider) { var result = await MusicCatalogService.GetAlbumAsync(id, provider); if (result == null) return ContentTo(MusicJson.Serialize(new { available = false, message = "Album not found." })); result = MusicImageProxyService.Apply(this, result); return ContentTo(MusicJson.Serialize(result)); } [HttpGet] [Route("music/track")] async public Task Track(string id, string provider) { var result = await MusicCatalogService.GetTrackAsync(id, provider); if (result == null) return ContentTo(MusicJson.Serialize(new { available = false, message = "Track not found." })); return ContentTo(MusicJson.Serialize(result)); } }