song-of-the-day/song_of_the_day/Pages/SubmitSongs.cshtml.cs
Simon Diesenreiter dbd83ebb6a
Some checks failed
CI / linter (9.0.X, ubuntu-latest) (push) Failing after 1m3s
CI / tests_linux (9.0.X, ubuntu-latest) (push) Has been skipped
SonarQube Scan / SonarQube Trigger (push) Failing after 4m47s
feat: basic initial implementation of spotify client link validator and song submission form refs: NOISSUE
2025-05-30 22:51:44 +02:00

72 lines
1.7 KiB
C#

using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.VisualBasic;
namespace sotd.Pages;
public class SubmitSongsModel : PageModel
{
private readonly ILogger<UserModel> _logger;
private SongResolver songResolver;
private string _submitUrl;
public SubmitSongsModel(ILogger<UserModel> logger, SongResolver songResolver)
{
_logger = logger;
this.songResolver = songResolver;
}
[BindProperty]
public bool IsValidUrl { get; set; } = true;
[BindProperty]
public string SubmitUrl {
get {
return _submitUrl;
}
set {
_submitUrl = value.ToString();
Uri? newValue = default;
try {
newValue = new Uri(_submitUrl);
}
catch (UriFormatException)
{
IsValidUrl = false;
return;
}
IsValidUrl = true;
if(this.songResolver.CanValidate(newValue))
{
this.SongData = this.songResolver.ResolveSongAsync(newValue).Result;
}
}
}
[BindProperty]
public bool CanSubmit { get {
return !string.IsNullOrEmpty(SongData?.Artist) && ! string.IsNullOrEmpty(SongData?.Name);
} }
[BindProperty]
public Song SongData { get; set; }
public void OnPost()
{
// Todo implement save submission
var x = SongData.Name;
}
public IActionResult OnGetUpdate()
{
var songUrl = Request.Query["SubmitUrl"];
this.SubmitUrl = songUrl.ToString();
return Partial("_SongPartial", SongData);;
}
}