Files
lampac/mods/Music/Controllers/SearchController.cs
T

88 lines
3.1 KiB
C#

using Microsoft.AspNetCore.Mvc;
namespace Music;
public class SearchController : BaseController
{
[HttpGet]
[Route("music/search")]
async public Task<ActionResult> 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<ActionResult> 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<ActionResult> 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<ActionResult> ArtistImage(string id, string name, string country, CancellationToken cancellationToken)
{
if (string.IsNullOrWhiteSpace(name))
return ContentTo(MusicJson.Serialize(new { available = false, id, images = new List<MusicImage>() }));
var artist = new MusicArtist
{
id = id,
name = name,
country = country
};
artist.images = await DiscogsArtistImageService.ResolveImagesAsync(artist, cancellationToken) ?? new List<MusicImage>();
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<ActionResult> 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<ActionResult> 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));
}
}