using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using RadicadeServer.DB; using RadicadeServer.RecNet.Enums; using RadicadeServer.RecNet.VersionCheck; namespace RadicadeServer.API { [Route("api/versioncheck/")] public class VersionCheckAPI(RecDBContext db) : Controller { [HttpGet("v4")] public async Task Get([FromQuery] string? v, [FromQuery] string? version) { var requested = v ?? version; var query = HttpContext?.Request?.QueryString.Value ?? ""; var announcement = await db.ServerConfig.AsNoTracking() .FirstOrDefaultAsync(x => x.Key == GameUpdateVersionCheck.AnnouncementConfigKey); var result = GameUpdateVersionCheck.Resolve(announcement?.Value, DateTime.UtcNow); return Ok(BuildClientResponse(result)); } [HttpGet("islandedversions")] public IActionResult GetIslandedVersions() { return Ok(Array.Empty()); } private static Dictionary BuildClientResponse(VersionCheckResult result) => new() { ["ValidVersion"] = 0, ["VersionStatus"] = (int)result.VersionStatus, ["UpdateNotificationStage"] = result.UpdateNotificationStage, ["IsVersionIslanded"] = result.IsVersionIslanded, ["IsCrossPlayDisabled"] = result.IsCrossPlayDisabled, }; } }