diff --git a/Controllers/Managers/CoverArtManager.cs b/Controllers/Managers/CoverArtManager.cs index 33e093d..4026d21 100644 --- a/Controllers/Managers/CoverArtManager.cs +++ b/Controllers/Managers/CoverArtManager.cs @@ -1,11 +1,3 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.IO; - -using Microsoft.AspNetCore.Http; -using Microsoft.Extensions.Configuration; - using Icarus.Constants; using Icarus.Controllers.Utilities; using Icarus.Database.Contexts; diff --git a/Controllers/v1/CoverArtController.cs b/Controllers/v1/CoverArtController.cs index a973bb6..97fbbf1 100644 --- a/Controllers/v1/CoverArtController.cs +++ b/Controllers/v1/CoverArtController.cs @@ -1,11 +1,5 @@ -using System; -using System.Linq; -using System.Threading.Tasks; - using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.Logging; using Icarus.Controllers.Managers; using Icarus.Database.Contexts; @@ -78,5 +72,20 @@ public class CoverArtController : BaseController return NotFound(); } } + + [HttpGet("data/download/{id}")] + public async Task Download(int id) + { + var songContext = new SongContext(_connectionString); + var covMgr = new CoverArtManager(this._config); + + var songMetaData = songContext.RetrieveRecord(new Song { SongID = id}); + var filename = songMetaData.Title + Constants.FileExtensions.JPG_EXTENSION; + var c = covMgr.GetCoverArt(songMetaData); + + var data = await c.GetData(); + + return File(data, "application/x-msdownload", filename); + } #endregion } diff --git a/Models/CoverArt.cs b/Models/CoverArt.cs index 7b22816..e4860bc 100644 --- a/Models/CoverArt.cs +++ b/Models/CoverArt.cs @@ -1,10 +1,3 @@ -using System; -using System.Collections.Generic; -using System.ComponentModel.DataAnnotations.Schema; -using System.Linq; -using System.Reflection.Metadata; -using System.Text; - using Newtonsoft.Json; namespace Icarus.Models; @@ -33,5 +26,10 @@ public class CoverArt return (flag == 0) ? filename : $"{filename}{extension}"; } + + public async Task GetData() + { + return await File.ReadAllBytesAsync(this.ImagePath); + } #endregion }